asp.net web api 2 CORS 和身份验证授权配置

Posted

技术标签:

【中文标题】asp.net web api 2 CORS 和身份验证授权配置【英文标题】:asp.net web api 2 CORS and authentication authorization configuration 【发布时间】:2014-07-01 18:41:42 【问题描述】:

我创建了一个具有个人帐户安全性的 asp.net web api 2 服务。我正在尝试按照此示例将其称为 AngularJs: http://www.codeproject.com/Articles/742532/Using-Web-API-Individual-User-Account-plus-CORS-En 无法让它工作,所以从这里添加了一些配置: How to make CORS Authentication in WebAPI 2?

并且无法通过此错误: XMLHttpRequest 无法加载“serverRegisterUrl”。 'Access-Control-Allow-Origin' 标头包含多个值 'clientUrl, *, *', 但只允许一个。因此,Origin 'clientUrl' 不允许访问。

我不明白这个错误信息。我认为 Access-Control-Allow-Origin 字符串意味着允许来源 clientUrl、所有标头、所有方法

我不明白这个问题。如果我应该只在某个地方单独指定原点,我不知道那是哪里。

我在 Microsoft Azure 上运行它并使用 vs express for web 2013 update 2 以防万一。

不幸的是,我不得不从错误消息中删除我的链接,因为我需要至少 10 的声誉才能在一个问题中发布超过 2 个链接。

【问题讨论】:

在您的 API 集 Access-Control-Allow-Origin: * 中,它应该可以工作 我的 api web.config 中有这个: " /> 不起作用 (我有一个星号代表我的价值)- 仍在试图弄清楚如何在此处正确发布 【参考方案1】:

我得到它的工作,我认为它归结为配置。 Web.config:没有“Access-Control-Allow-Origin”customHeaders 节点

Startup.Auth.cs:// This must come first to intercept the /Token requests app.UseCors(CorsOptions.AllowAll);

// Enable the application to use bearer tokens to authenticate users app.UseOAuthBearerTokens(OAuthOptions);

WebApiConfig.cs:(此处未启用 cors) //var cors = new EnableCorsAttribute("*", "*", "*"); //config.EnableCors(cors);

AccountController.cs: GetExternalLogin 方法的属性: [EnableCors(origins: "*", headers: "*", methods: "*")]


我认为这就是我当前的全部 CORS 配置。

【讨论】:

【参考方案2】:

只是添加到@AlexSmotritsky 的答案。

中使用 UseCors 方法
app.UseCors(CorsOptions.AllowAll);

记得安装 Microsoft.Owin.Cors NuGet 包并添加

使用 Microsoft.Owin.Cors; 指令。

【讨论】:

【参考方案3】:

您的Access-Control-Allow-Origin 值似乎是clientUrl, *, *,这可能是无效的。它只允许一个值。您可以输入 * 表示允许所有来源,或者您指定的来源,例如您的 AngularJS 主机。

我把我的代码放在https://gist.github.com/shaunxu/8414a78cd8074432fc69 这可能不是东方式,但它适用于我的应用程序。

【讨论】:

感谢您的代码。根据我如何配置它,我会得到:500(内部服务器错误)或请求的资源上不存在“Access-Control-Allow-Origin”标头。我将弄清楚如何在 azure 中跟踪/记录我的服务,因为我不知道这 500 个错误背后的原因,而且我认为在我开始使用您的课程之前,我在某些情况下已经生成了它们。 这绝对是一个天蓝色的东西。我的代码在本地工作,在 azure 中发生 500 错误,必须添加错误日志记录。

以上是关于asp.net web api 2 CORS 和身份验证授权配置的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP .NET Core 2.1 Web Api 中启用 CORS

CORS 在 ASP.NET Web API 2 应用程序中不起作用

本地 Javascript Fetch Post 请求失败,调用 ASP.NET Core 2.2 Web API。 CORS 已启用

如何让 CORS 与 ASP.Net Core Web API 服务器 Angular 2 客户端一起工作

如何在 asp.net web apis 中启用 cors 选项。?

我正在将我的 asp.net web api 迁移到 asp.net core。 Cors 迁移