ネットワーク プログラミングにおいて、クロスドメインの問題は常に開発者が頻繁に遭遇する困難な問題です。 PHP を使用するときに、多くの人がドメインを越えて PHP ファイルにアクセスできない状況に遭遇することがよくあります。では、なぜドメインを越えて PHP ファイルにアクセスできないのでしょうか?この記事では、この質問に対する詳しい答えを示します。
まず、クロスドメイン アクセスとは何ですか?
簡単に言えば、クロスドメイン アクセスとは、現在アクセスされているページのドメイン名が、要求されたターゲット リソースのドメイン名と異なることを意味します。たとえば、現在のページのドメイン名が www.example.com で、アクセスする必要があるリソースのドメイン名が api.example.com である場合、これはクロスドメイン アクセスのケースです。
クロスドメイン アクセスの問題が発生するのはなぜですか?
これは主に、ブラウザがセキュリティ上の理由から JavaScript でクロスドメイン アクセスをデフォルトで禁止しているためです。つまり、現在のドメイン名が要求されたリソースのドメイン名と異なる場合、ブラウザはクロスドメイン アクセスを禁止します。リクエストを実行します。
では、なぜドメインを越えて PHP ファイルにアクセスできないのでしょうか?
PHP ファイルは、クライアント ブラウザーで実行されるのではなく、サーバー上で実行されるサーバー側スクリプト言語です。したがって、PHP ファイル自体は JavaScript の同一生成元ポリシーの対象ではありません。
ただし、PHP ファイルで AJAX を使用してクロスドメイン リクエストを送信すると、サーバーはリクエストに応答し、対応するデータをクライアントに返します。ただし、この時点では、ブラウザーはこれを安全でない操作とみなし、リクエストを拒否するため、このリクエストをインターセプトします。
それでは、PHP ファイルへのクロスドメイン アクセスの問題を解決するにはどうすればよいでしょうか?
1 つの解決策は、サーバー側で応答ヘッダーを設定することです。 PHP ファイルに次のコードを追加すると、クロスドメイン アクセスを許可するようにブラウザに指示できます:
header('Access-Control-Allow-Origin: *');
ここでは、header() 関数を使用します。これは、HTTP 応答ヘッダーをクライアントに送信するために使用されます。 。このうち、Access-Control-Allow-Origin パラメーターは、リソースへのアクセスを許可するドメイン名を指定します。* は、任意のドメイン名がリソースへのアクセスを許可されることを意味します。
もちろん、この方法は最も安全というわけではありません。この設定の後は、すべてのドメイン名がドメインを越えてリソースにアクセスできるため、潜在的なセキュリティ リスクが生じる可能性があります。
もう 1 つの解決策は、プロキシ サーバーを使用してクロスドメイン アクセスを実現することです。クライアント ブラウザでプロキシ サーバーにリクエストを送信すると、プロキシ サーバーはターゲット リソースをリクエストし、リクエスト結果をクライアント ブラウザに返します。このようにして、ブラウザーの同一オリジン ポリシー制限を回避し、クロスドメイン アクセスを実現できます。
概要
PHP 開発では、主にブラウザの同一生成元ポリシーが原因で、ドメインを越えて PHP ファイルにアクセスできないという問題に遭遇します。この問題は、サーバー側でレスポンスヘッダーを設定するか、プロキシサーバーを使用することで解決できます。もちろん、高いセキュリティ要件が必要なプロジェクトの場合は、クロスドメイン アクセスをできる限り有効にして問題を解決するのではなく、他の安全な方法を使用することをお勧めします。
以上がドメインを越えて php ファイルにアクセスできない場合はどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。