【问题标题】:Add CORS header to an http request using Ajax使用 Ajax 将 CORS 标头添加到 http 请求
【发布时间】:2016-09-28 10:03:34
【问题描述】:

我已经开发了一个 Restfull 应用程序,我想添加另一个 Web 应用程序来使用它的服务,所以我进行了这个 Ajax 调用:

 $.ajax({
            type: "Post",
            async: false,
            url: "ip_adress/Inviter/api/Account/Register",
            data: donne,
            headers: {  "Access-Control-Allow-Origin:": "*"},
            success: function (data) {
                console.log(data);
                var tab = [];
                tab["username"] = username;
                tab["password"] = pwd;
                var isLogged = Login.CheckCredential(tab, username);
                return isLogged;
            },
            error: function (xhr, status, error) {
                console.log(xhr);
                console.log(status);
                console.log(error);
            }

        });

我得到了这个例外:

Object {readyState: 0, status: 0, statusText: "SyntaxError: Failed to 执行 'setRequestHeader' ...-Origin:' 不是有效的 HTTP 标头 字段名称。”} 错误 DOMException:无法执行 'setRequestHeader' 关于 'XMLHttpRequest': 'Access-Control-Allow-Origin:' 不是有效的 HTTP 标头字段名称。

所以我需要知道:

  • 在这种情况下如何启用 CORS?

  • 如何修复我的代码?

【问题讨论】:

  • 服务器需要设置标头,因为服务器决定谁可以访问以及从哪里访问。所以第一个问题的答案是:将标头添加到您的服务器。这应该会使您的第二个问题过时。
  • Access-Control-Allow-Origin 是一个http响应头,由服务器返回。详情请见developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

标签: javascript jquery ajax rest http


【解决方案1】:

不知何故,我重定向到这个问题以获得我的 Flask 应用程序的解决方案。由于服务器必须将响应发送回标头,因此必须在服务器端设置 CORS。 就我而言,我试图从

发送请求

客户 http://127.0.0.1:8081/

服务器 http://127.0.0.1:5051

所以我将 cors 策略设置为允许客户端的来源

headers: {  "Access-Control-Allow-Origin:": "*"},

对于服务器端,flask 提供库来允许 cors

from flask_cors import CORS
app = Flask(__name__)

CORS(app)

问题确实解决了

【讨论】:

    【解决方案2】:

    你不能这样授权自己。这是一个 response 标头; the specification 中的详细信息。您发送请求的服务器必须将该标头发回,以让浏览器知道允许您的页面向该服务器发送 ajax 请求是可以的。如果您尝试请求的服务器不允许您的来源,您的客户端代码将无能为力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-15
      • 2012-12-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多