【发布时间】:2017-12-17 21:25:13
【问题描述】:
我有一个 webforms 站点,我正在尝试通过 JQuery 向同一站点上的页面发出 Web 请求。但是,我尝试访问的页面是在 HTTPS 上,而不是在执行 Jquery 的页面使用的 HTTP 上。我收到有关“Access-Control-Allow-Origin”的错误,因此我对其进行了调查,现在我将以下内容添加到了我的 web.config 中。
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
这是我的 JQuery
<script type="text/javascript">
$( document ).ready(function() {
$.ajax({
type: "GET",
headers: {
"Access-Control-Allow-Origin": "*"
},
url: "https://www.example.com",
success: function (resp) {
//register browser as supported
console.log("supported");
},
error:function(e){
//register browser as unsupported
console.log(e);
console.log("unsupported");
}
})
})
</script>
但是我现在收到以下错误
XMLHttpRequest 无法加载 https://www.example.com/。回应 预检请求未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://www.example.com” 访问。
我需要做什么才能让它工作?
【问题讨论】:
-
也尝试添加
Access-Control-Allow-Methods。此外,您可以从 jQuery AJAX 调用中删除headers属性;请求中的标头是多余的。 -
我现在添加了
但它并没有修复错误。但是,从 ajax 请求中删除标头会返回原始错误“XMLHttpRequest 无法加载 example.com。请求的资源上不存在 'Access-Control-Allow-Origin' 标头。因此不存在 Origin 'example.com'允许访问。” -
您的配置看起来不错,但似乎并未应用于响应。您可以检查控制台“网络”选项卡中的标题以确认这一点。我只能建议您仔细检查您是否没有覆盖网站本身的 web.config 中的标题。
-
@coolblue2000 你能发布你的 webconfig 吗?