簡體   English   中英

獲取 wp_mail 已被 CORS 策略阻止

[英]Fetching wp_mail has been blocked by CORS policy

我正在使用 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('test@mail.com', 'subject', 'msg', $headers);

您正在處理的標頭都不是 SMTP 標頭。 他們不應該在 wp_mail function 附近的任何地方使用wp_mail

CORS響應頭( Access-Control-Allow-* )是HTTP 響應頭

通常使用 PHP,您需要使用header() function將它們添加到 HTTP 響應中。

header("Access-Control-Allow-Origin: *");

由於您使用的是 WordPress(我不太熟悉),因此請查看此答案,因為它似乎將自身包裹在正常的標頭 API 周圍。

Content-Type: application/json可能是 HTTP 請求響應 header。 從上下文中不清楚,因為您的代碼片段不包含任何讀取請求正文或生成響應正文的內容。

Accept: application/json是一個 HTTP 請求 header 並且需要從瀏覽器發送到服務器。 您根本不應該在 PHP 中設置它。

幾個月前我遇到了同樣的問題。

通過在函數中添加以下代碼來修復它。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);
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM