在我的API的选项响应中,我看到了:
Access-Control-Allow-Origin:http://localhost:19600
我想要的是CORS全部启用所以:
Access-Control-Allow-Origin:*
我应该注意到它确实有效,并突然停止工作。但我不知道为什么。
在我的OWIN启动配置中:
app.UseCors(CorsOptions.AllowAll);
var config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseWebApi(config);
有人在另一个帖子中建议先放app.UseCors(CorsOptions.AllowAll);
会有所帮助,但事实并非如此。
我发现有一种方法可以在Web.config
<system.webServer><httpProtocol><customHeaders>
创建自定义标头。
我尝试添加行<add name="Access-Control-Allow-Origin" value="*" />
,但这导致了两个标题,浏览器不接受。按<remove name="Access-Control-Allow-Origin"/>
删除没有任何效果(既不与添加相结合)。
还有其他可以设置标题的地方吗?
答案 0 :(得分:1)
我设法找到了解决方法。
我不知道这有什么影响,但是有效
将其添加到OWIN配置
private static void ConfigureCORSHeader(IAppBuilder app)
{
app.Use(async (context, next) =>
{
var req = context.Request;
var res = context.Response;
res.Headers.Set("Access-Control-Allow-Origin", "*");
if (req.Method == "OPTIONS")
{
res.StatusCode = 200;
res.Headers.AppendCommaSeparatedValues("Access-Control-Allow-Methods", "GET", "POST", "DELETE");
res.Headers.AppendCommaSeparatedValues("Access-Control-Allow-headers", "authorization", "content-type");
return;
}
await next();
});
}