目前,我正在使用Angular 5来构建一个网站。我的网站使用 0Auth 2.0 来保护发送到 Web API 2.0 的请求 ASP.net。因此,当我尝试发送请求以获取访问令牌时。我使用这个函数:
userAuthentication(userName, password) {
let data = "username=" + userName + "&password=" + password + "&grant_type=password&client_id=JCWebApp";
return this.http.post(this.rootUrl + '/login', data,{headers:'Content-Type':'application/x-www-form-urlencoded'}});
}
但是 Web api 服务器为我返回状态代码为 400 的响应。当我检查登录请求的请求头时,它是这样的:
接受
文本/html,应用程序/xhtml xm...plication/xml;q=0.9,/;q=0.8 Accept-Encoding gzip, deflate Accept-Language en-US,en;q=0.5 Access-Control-Request-Headers
no-auth Access-Control-Request-Method
POST Connection
keep-alive Host
localhost:9810 Origin
http://localhost:4200 User-Agent
Mozilla/5.0 (Windows NT 10.0; ...)壁虎/20100101火狐/59.0
我在互联网上进行了研究,并尝试了很多方法,大多数答案都与: - Angular HttpClient 不发送标头。但它不适用于我的情况。
因此,请帮助我解释为什么以及如何解决此案。
谢谢。
您需要在 Web API 中启用 CORS
在nuget Microsoft.Owin.Cors中下载此内容
以及位于Web API中的ConfigureAuth(IAppBuilder应用程序)
添加此代码行应用。UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);