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 インデックスの知識の要約

推薦する

Ubuntu仮想マシンでシリアル通信にcutecomを使用する方法

Ubuntu仮想マシンでのシリアル通信にcutecomを使用する1. cutecomをインストールす...

スケーラブルな列の完全な例を実現するための Ant 設計 Vue テーブル

ant-design-vue テーブルのスケーラブルな列の問題に対する完璧なソリューション。固定列と...

Vueはランニングライトのシンプルな効果を実現

この記事では、マーキーのシンプルな効果を実現するためのVueの具体的なコードを参考までに共有します。...

jQuery はラブエフェクトをクリックする

この記事では、jQueryのクリック時のラブエフェクトの具体的なコードを参考までに共有します。具体的...

jsを使用してシンプルなカルーセル効果を実現する

この記事では、シンプルなカルーセル効果を実現するためのjsの具体的なコードを参考までに紹介します。具...

HTML+CSS+jQuery はスクリーンショットで検索ホットリストタブ効果を模倣します

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

Mysqlデータベースの文字化けに対処する方法

MySQL では、データベースの文字化けは一般的に文字セットを設定することで修正できますが、文字化け...

史上最もシンプルな MySQL データのバックアップと復元のチュートリアル (パート 2) (パート 36)

データのバックアップと復元パート2は次のとおりです基本的な概念:バックアップ、現在のデータまたはレコ...

Dockerでのpython3.8イメージのインストールについて

Docker Hub公式サイト1. Pythonミラーを検索するdocker 検索 python 2...

jQueryは時間セレクタを実装する

この記事の例では、参考までに時間セレクターを実装するためのjQueryの具体的なコードを共有していま...

MySql の 4 つのトランザクション分離レベルについて簡単に説明します。

分離レベル:隔離はあなたが考えるよりも複雑です。 SQL 標準では 4 つの分離レベルが定義されてお...

HTML での select optgroup タグの使用の概要

時々、選択した内容をグループ化する必要があります。以前はプログラム制御を使用していました。今日、se...

Windows での Nginx のインストールと環境設定 (nginx をサービスとして実行)

最初で最も重要なステップは、Windows 環境に Ngnix サービスをインストールする方法です。...

Dockerのローカルイメージ作成方法の分析

コンテナと呼ばれるものは、実際には親イメージに基づいて読み取りおよび書き込み可能なファイル階層を作成...

Dockerデータを完全にクリーンアップする方法

目次定期的に剪定するミラーエビクションコンテナのクリーンアップネットワークソート体積の蒸発完全にクリ...