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中文網其他相關文章!