2012-03-09 21 views
5

クロスサブドメインAJAX呼び出しを許可するために、自分のサイトのすべてのサブドメインにアクセスを許可しようとしています。アクセス制御オリジンを使用して複数のサブドメインを指定

header('Access-Control-Allow-Origin: http://api.example.com http://www.example.com'); 

私は似ているように見える、次の質問を読んでいる:*.example.comまたは代わりのようなサイトのすべてのサブドメインを指定する方法がありますが、なぜ私が記載されている複数のドメインを持っている場合は動作しませ以下のん私がサブドメインにアクセスしたいという事実以外の、これと同じではないにしても、これは一般的なドメインを指します。

Access-Control-Allow-Origin Multiple Origin Domains?

上記の質問は、この問題を解決する場合には、どのように私は、ヘッダから、原点を取得できています。 $ _SERVER ['HTTP_ORIGIN']は非常に信頼性が低く、ブラウザを越えていないようです。私はjavascriptを使用してAJAX呼び出しを送信しようとするとエラーを表示する可能性のあるブラウザで、その起源を見ることができる必要があります。ここで

+0

あなたの質問の最初の部分は、リンクで回答されています。あなたの2番目の質問について:ブラウザがクロスドメインポリシーによって禁止されているAjax呼び出しを試みると、リクエストは失敗し、サーバーにはまったく届きません。エラーはブラウザで処理する必要があります。 –

+0

私はエラーを受け取ることに気付いていますが、呼び出しが外部ファイルにアクセスしようとした後にこのエラーが発生します。ファイルがそれを拒否すると、エラーがスローされます。私はすべてのアクセスを許可するヘッダーを設定する場合、それは動作しますが、これは私にはあまりにも開いているので、私はそれを要求の起源に関連して設定したいと思います。したがって、PHPを使用してリクエストの起点を取得する方法を知りたいと思います。 –

+0

「$ _SERVER ['HTTP_ORIGIN']は非常に信頼できず、ブラウザを横断していない」ということを詳しく説明できますか? $ _SERVER ['HTTP_ORIGIN']は、ブラウザで実行されないサーバー側の値です。 – monsur

答えて

18

この問題の解決方法は、$ _SERVER ['HTTP_ORIGIN']変数を使用して、リクエストが許可されたドメインから来たものかどうかを判断することです。

header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']); 
-2

は、あなたの質問についての良い記事です: http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/

それが十分ではないのですか、このようなプロキシを必要とどちらか動作しない場合: https://raw.github.com/cowboy/php-simple-proxy/master/ba-simple-proxy.php

その後、あなたはパラメータでのプロキシを呼び出すことができます次のようになります。 http://www.example.com/ba-simple-proxy.php?url=https://api.example.com

+0

"ここにあなたの質問についての良い記事があります" - その記事は質問に全く言及していません。 – Quentin

+0

"これで十分ではない、あるいはうまくいかない場合は、このようなプロキシが必要です。" - いいえ、プロキシは必要ありません。受け入れられた答えを見てください。 – Quentin

関連する問題