javacriptファイルからクロスドメインリソースにアクセスすることができません。XMLHttpRequest()を使用しています。 私はいくつかの類似の質問があることを理解しています、私はそれらのいくつかを行ったが、私はいくつかの詳細について少し混乱している。 正確なセットアップと私の具体的な疑問について言及します。CORS(クロスオリジンリソース共有)をどのように/有効にするか?
セットアップ:
私は私のローカルLANのネットワークに存在するUbuntuマシン上で実行しているApacheサーバ上で私のHTMLとJSファイルを持っています。このアプリケーションは、video.jsの基本的なhlsプラグインです。 同じローカルLANのWindows PCから、hlsプレーヤー用のindex.htmlファイルを開きます。限り、私はLinuxマシン上に存在している映像コンテンツを選択すると、予想通り、それが正常に動作しますが、それを外部コンテンツ(例えばhttp://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8)を与えるには、エラーを失敗し、提供します:
XMLHttpRequestがhttp://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8をロードすることはできません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。 Origin 'http://172.20.33.49'はアクセスできません。
(ここで172.20.33.49はLinuxマシンのIPれる)だから私のクエリは
です:
どのサーバーでアクセス制御 - 許可 - 起源ヘッダがなければなりません適切な値に設定してください(簡単にするために '*'と答えてください)。これは、ローカルのLinuxサーバーまたは外部コンテンツをホストするサーバー、あるいはその両方で動作しますか?
これが機能するには、ブラウザ/ JavaScriptまたはHTMLコードで行う必要がある設定/設定/コードの変更はありますか?
- 一般的なクエリとして、CORSが動作するためにクライアントが行うことができることはありますか、それとも純粋にサーバーの要件/構成ですか?
- HTTP応答で 'アクセス制御許可原点'は必須ですか?そうでない場合、その欠如は何を意味しますか?同じドメインのリソースにしかアクセスできないこと、またはすべてのドメインがアクセス可能であることを意味しますか?クライアントがサーバーにこのヘッダーを追加させる方法はありますか?
詳細な対応をありがとうございます。 この場合、外部のサーバーを制御していないため、外部のコンテンツを再生する方法はありません(応答を傍受して変更するブラウザプラグインのインストールを除いて)。 若干異なる点として、ほとんどのサーバーで他のドメインからのアクセスを許可しないようにするのは、これが一般的な/典型的な動作です。つまり、これはJavaScriptコードのアクセスを厳しく制限するように見えるでしょうか? –
はい、これは正常です。 JavaScriptのための厳しい制限されたアクセスは良いことです。訪問したウェブサイトでGmailをリクエストしたり、メールを読んだりすることはできません。オンラインバンキングですか?クロスオリジンの要求では、データのサプライヤが積極的に安全で望ましいと言わなければなりません。 – Quentin