首頁  >  文章  >  後端開發  >  為什麼我的 CORS 實作無法在 PHP 中運作?

為什麼我的 CORS 實作無法在 PHP 中運作?

Barbara Streisand
Barbara Streisand原創
2024-11-04 10:24:29334瀏覽

Why is my CORS implementation not working in PHP?

CORS 在PHP 中不起作用:已解決的案例

實作跨來源資源共享(CORS) 以促進跨不同來源的數據交換一個共同的挑戰。然而,遇到與 CORS 相關的錯誤可能會令人沮喪。

使用者最近報告在嘗試從 www.siteone.com 向 www.sitetwo.com 提交表單資料時遇到 CORS 問題。儘管在目標域的“cors.php”檔案中實現了所需的標頭設置,但用戶收到“Access-control-Allow-Origin”錯誤。

分析與解決方案:

檢查程式碼和標頭後發現 CORS 標頭的初始實作不完整。 「cors.php」中使用的以下程式碼片段是不夠的:

<code class="php">header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');</code>

為了全面處理 CORS 請求,需要更詳細的回應。以下更新的程式碼提供了有效的解決方案:

<code class="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']))
        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);
}

echo "You have CORS!";</code>

結論:

透過合併允許來自任何來源的請求的附加程式碼行解決了CORS 實現錯誤、啟用憑證並設定快取持續時間。這種增強的 CORS 處理確保了成功的跨域資料交換。

以上是為什麼我的 CORS 實作無法在 PHP 中運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:如何學習 PHP下一篇:如何學習 PHP