【发布时间】:2018-04-22 13:59:28
【问题描述】:
我正在尝试登录我的应用程序。它应该返回 JWT 令牌,当我调试我的后端时它工作了 - 通过方法返回语句。问题是,我的前端没有得到它。浏览器的网络跟踪器说它返回了204 No Content, console logs 500 (Internal Server Error) 并且:
"对预检请求的响应未通过访问控制检查: “Access-Control-Allow-Origin”标头包含多个值 'http://localhost:4200, *',但只允许一个。起源 'http://localhost:4200' 因此不允许访问。"
首先它说没有 Access-Control-Allow-Origin 标头,但我添加了
<add name="Access-Control-Allow-Origin" value="*" />
到我的webconfig,现在错误如上。
问题是,我有一个不同的应用程序运行这些完全相同的设置,它没有问题:/唯一的区别是我在这个应用程序中使用了身份和 Jwt 令牌,但它不应该影响应用程序。
在启动时,我启用了 cors 并使用了这些选项:
app.UseCors(builder =>
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
这应该足以允许任何来源,不是吗? 我也有
Access-Control-Allow-Origin:* 在响应标头上
不知道控制台中的localhost:4200, * 是从哪里来的...
【问题讨论】:
-
在添加显式标头之前的整个错误消息是什么?
-
@Kirk 请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'localhost:4200' 不允许访问。响应的 HTTP 状态代码为 500。
-
@William-H-M 它是相关的,我已经阅读过,问题是我使用的是 ASP.NET Core 2,CORS 在这里设置不同:/
-
我认为这可能是由于您在上一个错误中的 500 状态代码 - 当服务器引发异常等时,未设置 CORS 标头的某些内容。明确添加标头, OPTIONS 请求现在失败,但我希望它之前有效,然后实际请求导致错误。
标签: angular asp.net-core asp.net-web-api