【问题标题】:CORS preflight call not firing the following GET/POST requestCORS 预检调用未触发以下 GET/POST 请求
【发布时间】:2016-09-13 10:43:58
【问题描述】:

在 WebAPI 应用程序中,我按照文章中的描述实现了自定义 CORS 策略:http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api#allowed-origins,但来源是在自定义部分的web.config 文件中设置的。我有一个将请求发送到 WebAPI 的 Angular 客户端应用程序。

我尝试了两种情况:

1) 使用localhost url 运行应用程序。

2) 使用计算机名称运行应用程序。

在这两种情况下,我的来源都包含在 web.config 文件中。在第一种情况下,一切正常。在第二个发送 CORS 预检请求,但没有实际的 GET 或 POST 请求跟随。在预检响应中有正确的标题:

Access-Control-Allow-Headers: content-type, custom-session-id
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Origin: http://computername

有什么问题吗?我将不胜感激。

编辑:来自提琴手的截图:

【问题讨论】:

  • OPTIONS 必须返回 200 OK 才能继续进行预检,还要检查 Access-Control-Allow-Origin: * 是否正常,这意味着您的计算机名配置错误
  • 我获得了 200 状态。我尝试了Access-Control-Allow-Origin: * - 但问题存在。我将AllowAnyMethod 设置为true 和AllowAnyOrigin。但没有运气。
  • 您能否为OPTIONS 调用添加实际请求和响应标头的屏幕截图?
  • app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); 这必须在其他设置之上首先执行,检查您的 Startup.cs 中的顺序
  • @Sherlock:你的意思是config.EnableCors(); 电话?是否也应该在路由映射和添加自定义消息处理程序之前调用它?

标签: c# angularjs asp.net-web-api


【解决方案1】:

我找到了解决方案:CorsPolicy 对象中缺少设置:需要设置SupportsCredentials。我没想到即使我不发送凭据,我仍然需要设置此标志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-13
    • 2016-12-16
    • 1970-01-01
    • 2017-11-04
    • 2019-05-23
    • 2020-03-07
    • 2022-07-18
    • 2021-08-25
    相关资源
    最近更新 更多