XMLHttpRequest 无法加载,不存在 'Access-Control-Allow-Origin' header(无法读取 JavaScript/jQuery 中的 Ajax 响应)

XMLHttpRequest cannot load, No 'Access-Control-Allow-Origin' header is present (Unable to read Ajax response in JavaScript/jQuery )

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

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

当然,“请求的页面”和“Ajax请求的URL”在同一个域中。仍然,我在浏览器控制台中看到指定的错误消息并且无法读取 JavaScript/jQuery 的响应。请帮帮我。

Error message: XMLHttpRequest cannot load https://store.example.com/account?. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://store.example.com' is therefore not allowed access.

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

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

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

Solution

JSONP

JSONP 或 "JSON with padding" 是 Web 浏览器中 JavaScript 程序 运行 中使用的一种通信技术,用于从不同域中的服务器请求数据,这是典型的 Web 浏览器所禁止的,因为同源策略。

示例

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

希望这能给你一个想法伙计..:)