【问题标题】:XMLHttpRequest javascript POST-request issue "cannot load url"XMLHttpRequest javascript POST 请求问题“无法加载 url”
【发布时间】:2015-11-12 04:06:59
【问题描述】:
var http = {};

http.request = (function () {
    function send(jsonObject, url) {
        var jsonString = JSON.stringify(jsonObject);
        var req = new XMLHttpRequest();
        req.open("POST", url);
        req.setRequestHeader("Content-Type", "application/json");
        req.send(jsonString);
    }
    return {
        send: send
    };
})();

我正在尝试使用这个 javascript 函数来发送数据。但是它给了我一个错误: “XMLHttpRequest 无法加载 url。预检响应无效(重定向)”

我做错了什么?

【问题讨论】:

  • 这听起来像同源策略。是另一个域的网址吗?
  • 提供您请求的 URL 以及您从哪里请求。
  • 为什么要在自调用匿名函数中嵌入 ajax 调用。它的基本功能是在不全局化的情况下执行脚本
  • 我在 url:httpbin.org/post 和其他人中也遇到了问题。我不认为这个问题与网址有关。
  • 我注意到问题是由内容类型为“application/json”引起的。我在使用 JQuerys ajax 发送数据时遇到了同样的问题。

标签: javascript json post xmlhttprequest


【解决方案1】:

由于您将内容类型设置为 json,因此这被视为预检请求。这意味着基本上发出了两个请求:第一个请求服务器允许发出请求,第二个是实际请求。对于这种情况,您至少需要在服务器端检查请求的来源:

header('Access-Control-Allow-Origin: your origin url')

您可能还需要检查请求方法:

header('Access-Control-Allow-Methods: POST')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 2012-06-27
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    相关资源
    最近更新 更多