如何解决No' Access-Control-Allow-Origin' dotnet core web api中的错误

时间:2017-07-12 18:24:22

标签: rest api cors .net-core

我有dotnet core web api app,当尝试通过IP地址从另一台计算机或同一主机发出POST请求时会返回以下错误:

  

XMLHttpRequest无法加载http://10.50.1.46:2280/api/login/。响应   预检请求没有通过访问控制检查:否   '访问控制允许来源'标题出现在请求的上   资源。起源' http://10.50.1.46:8080'因此是不允许的   访问。响应的HTTP状态代码为400。

客户端应用是vue.js应用。这是登录方法片段失败:

    login: function(e) {
        e.preventDefault();
        this.connectionError = false;
        this.loginError = false;

        var headers = { 'Content-Type': 'application/json' };
        var loginUrl = 'http://10.50.1.46:2280/api/login/';
        var data = {Login: this.user.login, Password: this.user.password};

        console.log('Sending login request for user : ' + this.user.login);

        this.$http.post(loginUrl, data, {headers: headers})
            .then(response => {
                // get body data
                var data = response.body.data;
                setCredentials(this.user.login, data.accessToken, data.refreshToken);
                this.$router.push('/home');
            }, response => {
                console.log(response);
                if(response.status == 0) {
                    this.connectionError = true;
                } else {
                    this.loginError = true;
                }
            });

    }

这是我的Startup.cs文件。以下是请求和回复headers info

知道怎么解决吗?

1 个答案:

答案 0 :(得分:4)

在ConfigureServices中的Startup.cs上的

输入以下行:

 services.AddCors(options => options.AddPolicy("Cors",
            builder =>
            {
                builder.
                AllowAnyOrigin().
                AllowAnyMethod().
                AllowAnyHeader();
            }));

并在Configure方法中输入以下行:

app.UseCors("Cors");

此处有更多信息:https://docs.microsoft.com/en-us/aspnet/core/security/cors