AngularJS在POST时获得401(未授权),但不是Postman

时间:2016-06-07 15:16:46

标签: javascript c# asp.net angularjs

编写AngularJS应用程序。在POST时,它会收到401错误。邮差没有。

这是追踪与AngularJS存在而不是邮差的CORS问题的追踪。

我的AngularJS POST看起来像这样:

function(resetRequest) {
            return $http({
                method: 'POST',
                url: baseUrl,
                data: resetRequest,
                params: {

                }
            })
                    .then(function (response) {
                        return response.data;
                    });

我对ASP.Net网络API进行了以下更改,以尝试解决我的POST CORS问题:

在Startup.cs中:

var corsPolicy = new CorsPolicy
{
    AllowAnyMethod = true,
    AllowAnyHeader = true
};

var origins = ConfigurationManager.AppSettings["cors-orgins-local"];

if(origins != null)
{
    foreach(var origin in origins.Split(','))
    {
        corsPolicy.Origins.Add(origin);
    }
}
else
{
    //TODO: Throw exception
}

corsPolicy.SupportsCredentials = true;

var corsOptions = new CorsOptions
{
    PolicyProvider = new CorsPolicyProvider
    {
        PolicyResolver = context => Task.FromResult(corsPolicy)
    }
};



app.UseCors(corsOptions);

在IdentiyConfig.cs中,在Create(..)中:

var origins = ConfigurationManager.AppSettings["cors-orgins-local"].Split(',');

context.Response.Headers.Add("Access-Control-Allow-Origin", new[] {origins[0]});
context.Response.Headers.Add("Access-Control-Allow-Credentials", new[] {"true"});

这些更改已经消除了在POST时出现在浏览器控制台中的CORS错误,这些错误与起源以及有关源和凭据的标题有关。

如何解决此401错误?

0 个答案:

没有答案