我有一个React和ASP.NET Core 2.2 SPA,在Firefox中存在CORS问题,但在Chrome和Edge中可以。我已经创建了一个小型测试平台,其中包括启用了CORS的ASP.NET Core 2.2 Web API模板和一个使用fetch
来调用Web API的Create React App。
以下是启用了CORS的ASP.NET Core Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
{
builder.AllowAnyMethod().AllowAnyHeader().AllowCredentials().WithOrigins("http://localhost:3000");
}));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors("CorsPolicy");
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
}
这是请求数据的React页面:
const App: React.FC = () => {
const [data, setData] = useState("loading ...")
useEffect(()=>{
fetch("https://localhost:44335/api/values").then(res=>res.json()).then(body=>{
setData(JSON.stringify(body));
})
},[]);
return <p>{data}</p>
}
这在Chrome和Edge中正常工作,但在Firefox中出现以下错误:
我可以正确启用CORS吗?还是我想念其他东西?任何帮助表示赞赏。