【问题标题】:ajax post request is No 'Access-Control-Allow-Origin' header is present on the requested resource.'ajax post request is No 'Access-Control-Allow-Origin' header is present on the requested resource.'
【发布时间】:2013-12-11 05:49:42
【问题描述】:

我只是在发出一个 ajax 发布请求,但收到如下错误:

XMLHttpRequest 无法加载 https://xxx.com?redirect_uri=http://www.example.com。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'http://example.com'。

在这里我可以看到除了“www”之外,我的响应域和请求域没有什么不同,那么“www”也会导致这个问题吗?

【问题讨论】:

标签: jquery ajax cross-domain cross-domain-policy


【解决方案1】:

从外部网站请求数据时,最好不要在 ajax 中进行,但如果必须这样做,ajax 有一个内部页面,该页面使用服务器端代码调用并使用 ajax 调用该页面。

【讨论】:

    【解决方案2】:

    问题是因为您正在发出跨域 AJAX 请求,浏览器安全性阻止了该请求 - 请参阅 Same Origin Policy

    请求期望您向启用 CORS 的域发出请求,因此它抱怨不存在的标头。

    您要么需要将请求更改为jsonp 类型,要么使用服务器端代理来获取数据。

    【讨论】:

    • 这里也是www的问题吗?
    • 不,一点也不,假设在 DNS 中正确转发了非 www 版本的域。
    • 实际上我的响应是期待 www 而我的请求域没有它。但是这两个域是相同的,唯一的区别是有和没有“www”。我的怀疑只是在这一点上。
    • 在这种情况下使用相对路径。如果两个域完全相同(具体到端口和协议),那么它将起作用。
    猜你喜欢
    • 1970-01-01
    • 2019-01-18
    • 2021-04-28
    • 2016-07-10
    • 1970-01-01
    • 2022-08-08
    • 2017-12-01
    • 2016-08-12
    • 1970-01-01
    相关资源
    最近更新 更多