【问题标题】:ASP.NET not returning response, Angular says No 'Access-Control-Allow-Origin' header is present - but there is?ASP.NET 没有返回响应,Angular 说没有“Access-Control-Allow-Origin”标头存在——但有吗?
【发布时间】: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


【解决方案1】:

感谢 Visual Studio 中的输出窗口,我找到了罪魁祸首。我不知道为什么,但 Visual 没有因空引用而崩溃,只是将其记录到输出。

无论如何,问题是 Git 没有附加 appsettings,我在其中存储了用于生成 Jwt 的 JwtIssuer 变量,因此它得到了 null 而不是字符串。

感谢@Kirk 为我指明了正确的方向!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-26
    • 2016-12-25
    • 2016-01-21
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 2014-10-21
    • 2017-09-19
    相关资源
    最近更新 更多