我有以下情况。
从位于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>
以下网站报告了许多配置以在许多服务器类型上启用 CORS