Estoy construyendo un sitio de wordpress sin cabeza con Nextjs. Estoy tratando de hacer una llamada api a mi wordpress CMS.
Al obtener datos de wordpress, no puedo pasar el cors. Realmente no pude encontrar una manera de agregar Access-Control-Allow-Origin a mi llamada api. He estado tratando de hacerlo así, pero todavía tengo el error CORS.
$headers = array('Access-Control-Allow-Origin: *; Content-Type: application/json; Accept: application/json'); wp_mail('test@mail.com', 'subject', 'msg', $headers);Ninguno de los encabezados con los que está tratando son encabezados SMTP. No deberían acercarse a la función wp_mail .
Los encabezados de respuesta CORS ( Access-Control-Allow-* ) son encabezados de respuesta HTTP .
En general, con PHP, debe agregarlos a la respuesta HTTP con la función header() .
header("Access-Control-Allow-Origin: *");Como está utilizando WordPress (con el que no estoy muy familiarizado), mire esta respuesta , ya que parece envolverse alrededor de la API de encabezados normales.
Content-Type: application/json podría ser una solicitud HTTP o un encabezado de respuesta. No está claro por el contexto, ya que su fragmento de código no incluye nada para leer el cuerpo de la solicitud o generar el cuerpo de la respuesta.
Accept: application/json es un encabezado de solicitud HTTP y debe enviarse desde el navegador al servidor. No deberías configurarlo en PHP en absoluto.
Tuve el mismo problema hace unos meses.
Se solucionó agregando el siguiente código a functions.php
// Allow from any origin if (isset($_SERVER['HTTP_ORIGIN'])) { header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); header('Access-Control-Allow-Credentials: true'); header('Access-Control-Max-Age: 86400'); // cache for 1 day } // Access-Control headers are received during OPTIONS requests if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) // may also be using PUT, PATCH, HEAD etc header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); exit(0); }