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

推薦する

nginx で仮想ホストを構成するための詳細な手順

仮想ホストは、インターネット上で実行されているサーバー ホストを複数の「仮想」ホストに分割する特殊な...

負荷分散と動的・静的分離を実現するNginx+Tomcatの原理の分析

1. Nginx ロードバランシングの実装原理1. Nginxはリバースプロキシを通じて負荷分散を実...

Ubuntu 20.04でLNMP環境を構築する方法

簡単な説明以前 Centos7 で構築し、その後個人開発環境として Ubuntu 20.04 を使っ...

vue+element で動的スキニングを実装するためのサンプルコード

プロジェクトのテーマがすべての人の美的感覚を満足できないこともあります。このとき、スキン変更機能は非...

W3C チュートリアル (4): W3C XHTML アクティビティ

HTML は、World Wide Web 上で公開するために使用されるハイブリッド言語です。 XH...

Vueのキャッシュ方法の例の詳細な説明

最近、「フロントエンドキャッシュ」という新しい要件が作成されました要件背景: フォームへの高頻度の繰...

Navicat for MySQL チュートリアル

まず、Navicat for MySQL をダウンロードしてインストールする必要があります。正規版の...

JavaScript 関数のカリー化

目次1 関数カリー化とは何ですか? 2 カレーの役割と特徴2.1 パラメータの再利用2.2 早期復帰...

Linux でも利用できる人気の Windows アプリ 10 選

データ分析会社Net Market Shareによると、Linuxデスクトップオペレーティングシステ...

CentOS7 systemdにカスタムシステムサービスを追加する方法

システムド: CentOS 7のサービスsystemctlスクリプトは、/usr/lib/syste...

JavaScriptの再帰の詳細

目次1. 再帰とは何ですか? 2. 再帰を使って数学の問題を解く1. 1 * 2 * 3 * 4 …...

相対幅と絶対幅が競合する場合の HTML+CSS div ソリューション

相対幅と絶対幅が競合する場合のdivソリューション概要: 一般的に、絶対幅を使用する場合は px を...

IE10以下のimgタグ問題の解決方法

問題を見つける以前、簡単なデモを書いたのですが、IE10以下では動作しないことがわかりました。ここに...

Linux デスクトップ用の 4 つのスキャン ツール

ペーパーレスの世界はまだ到来していませんが、書類や写真をスキャンすることで紙をなくす人が増えています...

Dockerでプロジェクトを実行する方法

1. プロジェクトwarが保存されているディレクトリを入力しますDockerfileを編集する vi...