2012-02-27 30 views
0

相対パスでサブドメインからのメインドメインの呼び出しを作りますサブドメインからの相対パスでそこに取得する方法はありますは、AJAXは、私は次のような構造を持っている

xmlhttp.open("POST",url,true); 

:URLは上記のように、JSは、ライン上で「権限エラー」というエラーを与えますか?そうでなければ、私はおそらくmysite.com/subdomainsを使用するリダイレクトを置くでしょう。

答えて

2

これは、同じ発信元ポリシーのためです。サブドメイン(たとえmysite.comとwww.mysite.comの場合でも、https://mysite.comhttp://mysite.comの場合でも)では、デフォルトでAJAXリクエストはドメイン境界を越えることができません。あなたはここで、このセキュリティ機能について少し詳細を見つけることができます:
http://en.wikipedia.org/wiki/Same_origin_policy

この制限制限は開発者にとってそれほど問題があるので、新しいブラウザがCORS(クロスオリジンリソースの共有)と呼ばれる政策フレームワークをサポートする、あなたがすることを可能にします許可されたホストとの通信を指定します。残念ながら、基本的なサポートは、バージョン8までのInternet Explorerに実装されていなかったので、あなたは、IE6-7をサポートする必要がある場合、それはあなたのために動作しません:
http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

ほとんどの人がこのような状況で何をするかにあります代わりにJSONPを使用します。これは、通常のスクリプトタグが同じOriginポリシーによってバインドされていないことを利用しているため、JSONレスポンスは関数呼び出しでラップされ、ブラウザによって実行され、そのデータへのコールバックアクセスが可能になります。 JSONPの詳細情報:JSONPの
http://en.wikipedia.org/wiki/JSONP

一つの注目すべき制限は、それが唯一の(POSTまたは他のHTTP要求タイプではない)サーバーにGET要求に使用することができるということです。

多くのポピュラーなJavaScriptフレームワーク(jQueryなど)はJSONPをオプションとしてサポートしていますが(ほとんどの場合、AJAXリクエストの作成時にリクエストタイプ変数を切り替えるだけです)、明らかに、サーバーサイドスクリプトを適切に対応するためにこれらの要求を処理します。

関連する問題