【发布时间】: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