Apache クロスドメイン リソース アクセス エラーの解決策

Apache クロスドメイン リソース アクセス エラーの解決策

多くの場合、大規模および中規模の Web サイトでは、静的リソース (フォント ファイル、画像など) を独立したサーバーまたは CDN に配置し、独立したリソース ドメイン名 (res.test.com など) を使用して、静的リソースを分散し、アクセスを高速化し、メイン サイトへの負荷を軽減します。

ただし、実際の展開では、ブラウザはこれらの異なるドメイン名からリソースを読み込むことができず、Firefox コンソールにエラーが報告されます。

<span role="presentation" class="objectBox objectBox-errorMessage "><span class="errorMessage ">クロスオリジン リクエストがブロックされました: 同一オリジン ポリシーにより、http://xxxxx のリモート リソースの読み取りは許可されません。 (理由: CORS ヘッダーに 'Access-Control-Allow-Origin' がありません)。 </span></span>

クロスオリジン リクエストがブロックされました: 同一オリジン ポリシーにより、http://xxxxx のリモート リソースの読み取りが禁止されています。 (理由: CORS リクエストが失敗しました)。

これは、最新のブラウザがこれをクロスオリジン リソースとして定義し、読み込みを許可しないためです。

クロスドメインを理解するには、まず同一オリジンポリシーを理解する必要があります。同一オリジンポリシーは、セキュリティ上の理由からブラウザに実装されている非常に重要なセキュリティポリシーです。

相同性とは何ですか?

URL は、プロトコル、ドメイン名、ポート、パスで構成されます。2 つの URL のプロトコル、ドメイン名、ポートが同じである場合、それらの URL のオリジンは同じです。

同一オリジンポリシー:

ブラウザの同一オリジンポリシーは、異なるオリジンの「ドキュメント」またはスクリプトが現在の「ドキュメント」の特定のプロパティを読み取ったり設定したりすることを制限します。 (ホワイトハットがウェブセキュリティについて語る[1])
あるドメインからロードされたスクリプトは、別のドメインのドキュメント プロパティにアクセスできません。

鍵となるのは、それをどう解決するかです。実際、それは非常に簡単です。静的リソース サーバーにヘッダー情報を追加するだけです。

アクセス制御許可オリジン *

この記事では操作にApacheを使用していますが、nginxも同様です

まずhttpd.confを編集します

この行を見つける

#LoadModule headers_module modules/mod_headers.so

#コメント文字を削除します

LoadModule headers_module modules/mod_headers.so

目的はApacheヘッダー情報カスタムモジュールを有効にすることです

次に、独立したリソースドメイン名の仮想ホストに行を追加します。

Header set Access-Control-Allow-Origin *

これは、このドメイン名のリソースにアクセスするときにヘッダーを追加することを意味します。

Apacheを再起動します

またお越しくださいね!

名前仮想ホスト 10.0.0.2:80
<仮想ホスト 10.0.0.2:80>
  ドキュメントルート /var/www/host.example.com
  サーバー名 host.example.com
  JkMount /webapp/* jkworker
  ヘッダーが Access-Control-Allow-Origin "*" に設定されます
  RewriteEngineオン
  書き換えルール ^/otherhost http://otherhost.example.com/webapp [R,L]
</仮想ホスト>

2 番目の Apache 設定の例を次に示します。

名前仮想ホスト 10.0.1.2:80
<仮想ホスト 10.0.1.2:80>
  ドキュメントルート /var/www/otherhost.example.com
  サーバー名 otherhost.example.com
  JkMount /webapp/* jkworker
  ヘッダーが Access-Control-Allow-Origin "*" に設定されます
</仮想ホスト>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • PHP Apacheでクロスドメインモードを有効にするプロセスの詳細な説明
  • nginx/apache 静的リソースのクロスドメインアクセスの問題を解決する詳細な説明
  • クロスドメインリクエスト用にApacheサーバーを構成する方法
  • Apache 構成は CORS (クロスオリジン リソース共有) の例をサポートします
  • Apacheドメイン名設定の落とし穴の詳細な説明
  • Java のよく使われるクラス ライブラリにある Apache Commons ツール クラスの詳細な説明と使用例
  • Linux+ApacheサーバURLの大文字と小文字の区別の問題を解決する
  • Ubuntu 18.04 に Apache、MySQL、PHP、LAMP をインストールするための完全なチュートリアル

<<:  React.js フレームワーク Redux 基本ケースの詳細な説明

>>:  MySQL インデックスの知識の要約

推薦する

JSを使用して画像を効果的に圧縮する方法

目次序文変換関係具体的な実装file2DataUrl(ファイル、コールバック) file2Image...

mysql のファイル mysql-bin.000001 とは何ですか? 削除できますか?

ポートを使用して MySQL をインストールした後、しばらくすると /var の容量が不足しているこ...

Dockerfileを使用してDockerイメージを構築する手順

Dockerfile は、命令を含むテキスト ファイルです。各命令はレイヤーを構築するため、各命令の...

Vue2 における 12 種類のコンポーネント通信

目次1. 小道具2..同期3.vモデル4.参照5. $emit/v-on 6. $attrs/$li...

忘れられたMySQLパスワードとログインエラーの問題について簡単に説明します

MySQL ログイン パスワードを忘れた場合、解決方法は実はとても簡単です。MySQL メイン構成フ...

MySQL 5.7.18 アーカイブ圧縮版のインストールチュートリアル

この記事では、MySQL 5.7.18アーカイブ圧縮版をインストールする具体的な方法を参考までに紹介...

Vue グローバル フィルターの概念、注意事項、基本的な使用方法

目次1. フィルターの概念1. グローバルフィルターのフォーマットをカスタマイズする2. フィルター...

MySQL で珍しい文字を挿入できないときの対処方法 (文字列値が正しくない)

最近、ビジネス側から、一部のユーザー情報の挿入に失敗し、エラー メッセージが「不正な文字列値:&qu...

JavaScript イベント ループのケース スタディ

js のイベント ループJavaScript はシングルスレッドなので、同じイベントで実行できるメソ...

MySQLのエンコードの不一致によって発生する可能性のある問題

ストアドプロシージャとコーディングMySQL ストアド プロシージャでは、テーブルとデータのエンコー...

MySQL サービス 1067 エラーの解決策: mysql 実行可能ファイルのパスを変更する

今日、MySQLサービス1067エラー問題に遭遇しました。システムアカウントを使用するように設定して...

Linx awk入門チュートリアルの詳細な説明

Awk はテキスト ファイルを処理するためのアプリケーションであり、ほぼすべての Linux システ...

Windows での MySQL 5.7.20 のインストールと設定方法のグラフィック チュートリアル

参考までにWindowsにMySQLをインストールします。具体的な内容は次のとおりです。 1.まずM...

JSはオンラインでのアナウンスのスクロール効果を実現します

この記事では、オンラインアナウンスのスクロール効果を実現するためのJSの具体的なコードを参考までに共...

Ubuntu 上の Apache で SSL (https 証明書) を設定する正しい方法の詳細な説明

まず、Alibaba Cloud の公式チュートリアルをご覧ください。ファイルの説明: 1. 証明書...