【问题标题】:XMLHttpRequest cannot load, No 'Access-Control-Allow-Origin' header is present (Unable to read Ajax response in JavaScript/jQuery )XMLHttpRequest 无法加载,不存在“Access-Control-Allow-Origin”标头(无法读取 JavaScript/jQuery 中的 Ajax 响应)
【发布时间】:2015-03-22 03:48:08
【问题描述】:

我正在使用 jQuery 向服务器发送 Ajax 请求,下面是代码 sn-p。

$.ajax({                
                type: 'POST',
                url: "https://store.example.com/account?",                
                data: "cf=cw&operation=update"
            })

当然,“请求的页面”和“Ajax 请求的 URL”在同一个域中。尽管如此,我还是在浏览器控制台中看到了指定的错误消息,并且无法使用 JavaScript/jQuery 读取响应。请在这里帮助我。

错误信息:XMLHttpRequest 无法加载 https://store.example.com/account?。没有“访问控制允许来源” 请求的资源上存在标头。起源 'http://store.example.com' 因此不允许访问。

【问题讨论】:

    标签: jquery ajax cross-domain


    【解决方案1】:

    AJAX 请求只有在发送方和接收方的端口、协议和域相等时才可能发生,否则可能导致 CORS。 CORS 代表 Cross-origin 资源共享,必须在服务器端支持。

    解决方案

    JSONP

    JSONP 或“带填充的 JSON”是一种通信技术,用于在 Web 浏览器中运行的 JavaScript 程序中,以从不同域中的服务器请求数据,由于同源策略,典型的 Web 浏览器禁止使用这种技术。

    例子

    $.ajax({
        type: 'POST',
        url: "https://store.example.com/account?",
        dataType: 'jsonp',
        success: function (data) {
            //code
        }
    });
    

    希望这能给你一个想法伴侣.. :)

    【讨论】:

    • 谢谢,能够找出我的代码的问题。这是协议。有趣的是,HTTP 和 HTTPs 被视为不同的协议。
    【解决方案2】:

    请求页面和请求的 URL 是否在同一个域中。你可以尝试使用相对路径访问url吗?

    $.ajax({                
                type: 'POST',
                url: "/account?",                
                data: "cf=cw&operation=update"
            })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      相关资源
      最近更新 更多