来自角度 4 的 Owin 令牌调用 请求的资源上不存在“Access-Control-Allow-Origin”标头

Posted

技术标签:

【中文标题】来自角度 4 的 Owin 令牌调用 请求的资源上不存在“Access-Control-Allow-Origin”标头【英文标题】:Owin token call from angular 4 No 'Access-Control-Allow-Origin' header is present on the requested resource 【发布时间】:2018-05-29 17:59:22 【问题描述】:

我正在使用 owin 在 asp.net webapi 中生成 oAuth 令牌,并且我已将 UserCors 添加为 Statrup.cs 配置中的第一行

public void Configuration(IAppBuilder app)

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

我还在 ConfigureOAuth(app) 中再次添加了它;

我手动尝试在 GrantResourceOwnerCredentials 中添加标题,如下所示

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

但是没有用。我不断收到错误消息 No 'Access-Control-Allow-Origin' header is present on the requested resource from angular side.

当我在配置文件中添加标题时,它显示重复。

<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost:4200" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT,DELETE" />
</customHeaders>

不知道发生了什么。

【问题讨论】:

检查您发送的标题。我的标题是内容类型,必须将其添加到 customheaders。标头来源和方法必须在请求和响应标头中匹配。 您能否提供有关自定义标头的更多详细信息?我正在使用 'Content-Type': 'application/x-www-form-urlencoded' 【参考方案1】:

诀窍是删除 Global.asax 并从启动文件中调用 WebApiConfig.Register。 This link 帮助了我。

【讨论】:

以上是关于来自角度 4 的 Owin 令牌调用 请求的资源上不存在“Access-Control-Allow-Origin”标头的主要内容,如果未能解决你的问题,请参考以下文章

Web Api OWIN - 如何在每个请求上验证令牌

授权角色 WebAPI oauth owin

授权角色 WebAPI oauth owin

openid connect owin 如何验证来自 Azure AD 的令牌?

在 WebAPI 的查询字符串中传递和验证 OWIN Bearer 令牌

从 OWIN 中的 OAuth Bearer Token 获取 IPrincipal