我正在使用 Nextjs 構建一個無頭 wordpress 網站。我正在嘗試對我的 wordpress CMS 進行 api 呼叫。
從 wordpress 獲取資料時,我無法通過 cors。真的找不到將 Access-Control-Allow-Origin 添加到我的 api 呼叫的方法。我一直在嘗試這樣做,但仍然出現 CORS 錯誤。
$headers = array('Access-Control-Allow-Origin: *; Content-Type: application/json; Accept: application/json');
wp_mail('[email protected]', 'subject', 'msg', $headers);
uj5u.com熱心網友回復:
您正在處理的標頭都不是 SMTP 標頭。他們不應該靠近wp_mail函式的任何地方。
CORS回應標頭 ( Access-Control-Allow-*) 是HTTP 回應標頭。
通常使用 PHP,您需要使用函式將它們添加到 HTTP 回應中header()。
header("Access-Control-Allow-Origin: *");
由于您使用的是 WordPress(我不太熟悉),因此請查看此答案,因為它似乎將自身包裹在正常的標頭 API 周圍。
Content-Type: application/json可能是 HTTP 請求或回應標頭。從背景關系中不清楚,因為您的代碼片段不包含任何讀取請求正文或生成回應正文的內容。
Accept: application/json是一個HTTP請求頭,需要從瀏覽器發送到服務器。你根本不應該在 PHP 中設定它。
uj5u.com熱心網友回復:
幾個月前我遇到了同樣的問題。
通過將以下代碼添加到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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/420980.html
標籤:
