【问题标题】:CORS AJAX Call not SuccessfulCORS AJAX 调用不成功
【发布时间】:2013-10-26 22:05:32
【问题描述】:

我有一个 AJAX 调用试图向 Web 服务器执行以下 CORS 请求(我目前仅使用最新版本的 Chrome 进行测试):

var xhr = new XMLHttpRequest();
xhr.open("get", "http://www.web_server_url.com/query", true);
xhr.onload = function(){
};
xhr.send(null);

与此同时,我仍然收到以下消息:

XMLHttpRequest cannot load http://www.web_server_url.com/query. Origin http://localhost is not allowed by Access-Control-Allow-Origin.

有人知道我错过了什么吗?

【问题讨论】:

    标签: javascript ajax cors


    【解决方案1】:

    原因正是它在错误中所说的:www.web_server_url.com 的服务器不允许localhost 来源。由服务器决定是否允许呼叫来源。在这种情况下,显然它不允许这样做。

    CORS 的工作方式是,服务器响应请求(或“预检”请求),其标头根据浏览器发送的信息允许或禁止来源。

    【讨论】:

    • 谢谢 T.J.由于我的请求是一个获取请求,因此使用任何预检参数都不会改变任何内容,对吧?服务器是谷歌趋势之一。有人会认为应该打开他们的服务器,不是吗?
    • 或者可能是因为来源是本地主机?
    • @JF0001:您必须查看 Google 趋势文档以了解他们通过 CORS 允许哪些请求。可能是它们不允许 localhost 但允许其他主机,或者它们可能根本不支持 CORS(例如,希望您改用 JSON-P)。
    • 其实T.J.,我以为“Access-Control-Allow-Origin不允许”这个消息是来自浏览器,而不是服务器,不是吗?
    • @JF0001:一般来说,浏览器会向您提供该消息因为另一端的服务器不允许该请求。所以 message 可能来自浏览器,但这是因为目标服务器提供的信息。浏览器无法自行决定是否允许跨域调用(除了不允许来自file:协议的所有调用的浏览器等),它必须询问目标服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2017-12-10
    相关资源
    最近更新 更多