使用Ajax将CORS头添加到http请求

时间:2016-05-30 14:20:26

标签: javascript jquery ajax rest http

我开发了一个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:失败   执行'setRequestHeader'... -Origin:'不是有效的HTTP标头   字段名。“}错误DOMException:无法执行'setRequestHeader'   'XMLHttpRequest':'Access-Control-Allow-Origin:'无效   HTTP标头字段名称。

所以我需要知道:

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

  • 如何修复我的代码?

2 个答案:

答案 0 :(得分:4)

你无法像那样授权自己。这是一个响应标题; the specification中的详细信息。您发送请求的服务器必须发回该标头,让浏览器知道可以让您的页面向该服务器发送ajax请求。如果您尝试请求的服务器不允许您的来源,则无法在客户端代码中执行任何操作。

答案 1 :(得分:0)

我以某种方式重定向到这个问题,以获取我的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)

它实际上已经解决了问题