这似乎是一个非常受欢迎的问题,但是我无法找到有效的解决方案
简而言之,仅在Chrome浏览器中,发出放置,补丁,删除或选项请求时会收到以下错误消息
起源'http://localhost:3000'已被CORS策略阻止:飞行前响应中Access-Control-Allow-Methods不允许方法补丁。
该呼叫在IE和Firefox中运行正常。通过邮递员和招摇也同样成功
我的API中有
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddCors();
return configureMvcServices.ExecuteConfig();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors(options => options.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
var configureApp = new ConfigureApp(app, env);
configureApp.DoConfig();
}
到目前为止,我也尝试过
我还试图手动设置标题以接受所有内容,但无济于事。我似乎找不到一个答案来创建中间件,但这并没有改变结果。我也有
我不知道该如何解决这个问题
这是进行呼叫的客户端代码
return fetch(url + path, {
method,
headers:{
'Accept': 'application/json',
'crossDomain':'true',
'Content-Type': 'application/json',
'Pragma': 'no-cache',
'Access-Control-Allow-Methods': '*'
},
body: JSON.stringify(data)
})
我不知道可以在客户端设置哪些标头,尝试将其更改为纯文本/文本,但是如果有任何标头可以解决该问题,那么我将用尽我的google fu。
另外获取和发布都很好
任何帮助将不胜感激。
答案 0 :(得分:2)
好的,我无法解释为什么团队中的另一个开发人员设法解决了这个问题。
简而言之,Chrome似乎不喜欢AllowAnyMethod()
您必须阐明每种方法
app.UseCors(options =>
options
.AllowAnyOrigin()
.AllowAnyHeader()
.WithMethods("POST", "GET", "PATCH", "PUT", "DELETE")
);