.htaccess と PHP での CORS の構成
Angular.js を使用してクロスオリジン アプリケーションを開発する場合は、CORS を有効にする必要があります(Cross-Origin Resource Sharing) により、異なるオリジンからのリクエストが許可されます。 .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>
.htaccess の代わりに PHP で CORS 設定を実装することで、ユーザーはクロスオリジン リクエストの問題を正常に解決します。これで、Angular アプリケーションは RESTful サービスにリクエストを行うことができます。
以上がCORS 構成に .htaccess ではなく PHP を選択する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。