我正在进行CORS POST请求并将Content-Type标头设置为json.这会触发Preflight OPTIONS请求触发(这很好并且预期)
此OPTIONS请求以200 OK响应,但这不是来自我的WebAPI应用程序.
我有一个自定义的消息处理程序,它永远不会受到影响,因此在看到ASP.NET之前,IIS会响应请求.
我找到了几个关于这个主题的帖子,他们说了以下内容
确保卸载/删除/禁用WebDav - 完成
确保删除/更改OPTIONSVerbHandler以使用aspnet_isapi.dll - 同时尝试
确保extensionlessURLHandler包含OPTIONS动词 - DONE
但是,我的选项请求仍然被劫持.我的意思是,IIS以200 OK响应,但在响应中不包括Access-Control-Allow-Origin标头.它不包括此标头,因为它永远不会到我设置此标头的WebAPI CORS代码.
我能找到的两个最好的帖子听起来像是我的问题
在这里:http://brockallen.com/2012/10/18/cors-iis-and-webdav/
我尝试在IIS中打开失败请求跟踪(FERB)并将其设置为跟踪所有200个状态代码.我没有看到选项请求被记录...不确定这是否意味着FERB不跟踪OPTIONS请求或者我是否需要更改FERB设置中的某些内容以使其跟踪OPTIONS请求,或者如果这是一条线索我的问题是什么?
这是在IIS 7.5上运行的ASP.NET WebAPI 2.0(也在IIS 8和IISExpress上测试,结果相同)无论什么浏览器(Chrome,FF和IE都以相同的方式失败)
我已经尝试了我能找到的关于这个主题的所有内容,仍然无法解决我的问题.
帮帮我StackOverflow,你是我唯一的希望.
我正在将 .NET Core Web API 从 2.2 迁移到 3.1。我遵循了 Microsoft 迁移说明,并在 UseRouting 和 UseEnpoints 之间调用了 CORS 中间件。但是,我仍然收到 CORS 错误。
在 ConfigureServices 方法中,我有:
services.AddCors();
Run Code Online (Sandbox Code Playgroud)
在配置方法中,我有:
app.UseRouting();
app.UseCors(options => options
.AllowAnyOrigin()
.AllowAnyHeader().AllowAnyMethod()
);
app.UseAuthentication();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
Run Code Online (Sandbox Code Playgroud)
Web 浏览器中的控制台错误是:
跨域请求被阻止:同源策略不允许读取位于http://localhost:5000/users/login的远程资源。(原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。
跨域请求被阻止:同源策略不允许读取位于http://localhost:5000/users/login的远程资源。(原因:CORS 请求没有成功)。
诊断:
我尝试遵循 Microsoft 的文档Enable Cross-Origin Requests (CORS) in ASP.NET Core,但它使用了过时的引用,例如;使用 Mvc 和 IHostingEnvironment。
我尝试创建一个全新的 Web API 和 Ember Web-UI,但这也不起作用。您可以找到一个简单的示例Getting-started-with-ember-js-and-net-core-3
知道是什么导致了问题?
理想的赏金奖励将用于有效的答案。最好在 Git 上发布一个可以工作的基本项目。
注意:我现在允许任何来源,以便我可以让它工作。最终,这将需要与已启用的 Web-UI 配合使用http://localhost:4200
更新
收到的状态代码是 …