.htaccess 與PHP 中配置CORS
使用Angular.js 開發跨域應用程式時,需要啟用CORS (跨來源資源共享)允許來自不同來源的請求。雖然 .htaccess 是配置 CORS 的常用方法,但有時可能無法如預期般運作。
根據使用者的 .htaccess 配置,應新增下列標頭:
Header set Access-Control-Allow-Origin "*" Header set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
但是,Angular 應用程式仍會遇到錯誤。由於靜態檔案的 .htaccess 設定已經到位,使用者決定使用 PHP 探索替代方法。
在index.php 檔案中加入以下程式碼:
<code class="php">// Allow from any origin if (isset($_SERVER['HTTP_ORIGIN'])) { // should do a check here to match $_SERVER['HTTP_ORIGIN'] to a // whitelist of safe domains 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, PUT, DELETE, OPTIONS"); if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); }</code>
由於使用的是Slim框架,因此額外加入了一條路由來處理OPTIONS請求:
<code class="php">// return HTTP 200 for HTTP OPTIONS requests $app->map('/:x+', function($x) { http_response_code(200); })->via('OPTIONS');</code>
透過在PHP中實現CORS配置而不是.htaccess,用戶成功解決了跨域請求問題Angular 應用程式現在可以向RESTful 服務發出請求。
以上是為什麼選擇 PHP 而不是 .htaccess 來進行 CORS 設定?的詳細內容。更多資訊請關注PHP中文網其他相關文章!