繁体   English   中英

使用 Ajax 向 http 请求添加 CORS 标头

[英]Add CORS header to an http request using Ajax

我开发了一个 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);
            }

        });

我得到这个例外:

对象 {readyState: 0, status: 0, statusText: "SyntaxError: Failed to execute 'setRequestHeader' …-Origin: ' is not a valid HTTP header field name."} error DOMException: Failed to execute 'setRequestHeader' on 'XMLHttpRequest' : 'Access-Control-Allow-Origin: ' 不是有效的 HTTP 标头字段名称。

所以我需要知道:

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

  • 我该如何修复我的代码?

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

不知何故,我重定向到这个问题以获得我的 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)

它实际上解决了这个问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM