TryGetFormCredentials 对跨域请求返回 null

Posted

技术标签:

【中文标题】TryGetFormCredentials 对跨域请求返回 null【英文标题】:TryGetFormCredentials returns null on cross-domain request 【发布时间】:2015-03-07 16:33:32 【问题描述】:

我在一个使用 WebAPI 的项目中设置了 OAuth 身份验证,我让它 100% 正常工作。

然后我将前端应用程序移到解决方案中的单独项目中。因此,现在当我运行应用程序时,它显然位于与 API 和身份验证服务器不同的 url (localhost:64049) 上(它们在同一个项目中,服务器来自 localhost:63265)。

为了让 CORS 正常工作,我认为我需要将此行添加到 GrantResourceOwnerCredentials

context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[]  allowedOrigin );

但是,当我运行它时,ValidateClientAuthentication 中的 TryGetFormCredentials 没有返回 clientId。

如果我从 Fiddler/Postman 发送请求,它仍然有效。

我错过了什么?

【问题讨论】:

【参考方案1】:

通过在 Startup.cs 中的应用上启用 CORS 来修复它:

app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

不过,我不得不删除其他响应标头。

【讨论】:

以上是关于TryGetFormCredentials 对跨域请求返回 null的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS 对跨域资源执行 OPTIONS HTTP 请求

AngularJS 对跨域资源执行 OPTIONS HTTP 请求

AngularJS 对跨域资源执行 OPTIONS HTTP 请求 => 错误 401

Ajax接触及对跨域的简单理解

Django 跨域请求处理

快速入门各种跨域