私は次のような状況にあります。
https://subdomain.mydomain.comにあるアプリケーションからhttps://mydomain.com/page.aspxにあるページのhtmlを取得しようとしています
私はこれをjquery $.ajaxメソッドで行っています。
$.ajax({
url: url,
type: 'GET',
contentType: 'application/x-www-form-urlencoded',
success: function (data, status, xhr) {
console.info("success");
},
error: function (xhr, status, error) {
console.error(error);
}
});
aspxページは実際に呼び出され、実行されます。
IE(XDomainRequest経由)とFirefoxの動作は同じです。インスペクター(IE開発ツールとFirebug)から、応答ステータスは200 OKで、予想サイズ(80KB)ですが、応答コンテンツは空です。jQueryエラーはそれほど有用ではありません:
readyState: 0,
responseText: ""
status: 0,
statusText: "error"
同一生成元ポリシーに関係していると思います。YQL(ただし、追加のライブラリは使用したくない)とJSONP(ただし、プレーンHTMLを使用しています)でこの種の問題を解決している人がいます。
必死の瞬間に私は次のようなトリックも試しました
document.domain = 'mydomain.com';
jQuery.support.cors = true;
失敗。ヒントはありますか?
この問題はAccess-Control-Allow-Origin
、呼び出されたアプリケーションで有効にする必要があることが原因でした。私の場合、それはIIS7ホスティングのasp.netアプリケーションでした。web.configに次の行を追加する必要がありました。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
次のWebサイトは、多くのサーバータイプでCORSを有効にするための多くの構成を報告しています