首頁  >  文章  >  後端開發  >  為什麼選擇 PHP 而不是 .htaccess 來進行 CORS 設定?

為什麼選擇 PHP 而不是 .htaccess 來進行 CORS 設定?

Patricia Arquette
Patricia Arquette原創
2024-10-31 19:46:29440瀏覽

Why Choose PHP Over .htaccess for CORS Configuration?

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

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