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

推薦する

Centos7.5 は mysql5.7.24 バイナリ パッケージの展開をインストールします

1. 環境整備:オペレーティング システム: CentOS Linux リリース 7.5.1804 ...

Linux仮想メモリについての簡単な説明

目次起源仮想メモリページングとページテーブルメモリのアドレス指定と割り当て関数プロセスメモリ管理デー...

CSSはヒントボックス、バブルボックス、三角形を作成します

場合によっては、ページにプロンプ​​ト ボックスやバブル ボックスが必要になることがあります。CSS...

要素タイムラインの実装

目次コンポーネント - タイムラインカスタムノードスタイルカスタムタイムスタンプコンポーネント - ...

Mysql5.7.17 winx64.zip 解凍バージョンのインストールと設定のグラフィックチュートリアル

1. mysql-5.7.17-winx64.zip をダウンロードします。リンク: https:/...

純粋な HTML タグにどれくらい精通していますか?

以下の HTML タグには、基本的に既存のタグがすべて含まれています。数分かけて 1 つずつ参照する...

SpringBoot でマイクロサービスを構築するために Docker を使用した実際の記録を分析する

それは何ですか? Spring Boot は、Spring オープンソース組織のサブプロジェクトであ...

MySQL 20 の高性能アーキテクチャ設計原則 (収集する価値あり)

オープンソース データベース アーキテクチャの設計原則01. 技術の選択最も使い慣れていて、最大限に...

NginxはIP経由の直接アクセスを禁止し、カスタム500ページにリダイレクトします

設定ファイルに直接 サーバー{ listen 80 default; # IPへの直接アクセスを禁止...

protobuf の簡単な紹介と Ubuntu 16.04 環境でのインストールチュートリアル

protobufの簡単な紹介Protobuf は、Google のオープンソースのシリアル化プロトコ...

選択にスタイルを追加するための純粋な CSS (スクリプトなし) 実装

通常は ul、li を介して選択のデフォルト スタイルを変更して、実現をシミュレートします。このよう...

Vueはスライダードラッグ検証機能の全プロセスを実現します

レンダリング 骨組みを定義し、HTMLとCSSを記述するHTML部分 <テンプレート> ...

Vue はスクロール可能なポップアップウィンドウ効果を実装します

この記事では、スクロール可能なポップアップウィンドウ効果を実現するためのVueの具体的なコードを参考...

Nginx/Httpd リバース プロキシ Tomcat 設定チュートリアル

以前のブログでは、Tomcatのサーバーの各コンポーネントの使用について学びました。 Tomcatは...

MySQL の最適化: 高品質の SQL 文を書く方法

序文インターネット上にはデータベースの最適化に関する情報や方法が数多くありますが、その多くは品質にば...