我有一个WebApi,它启用了CORS并且运行良好。
我想添加由API提供的静态文件,以补充实际的WebAPI方法。
如果直接转到静态文件就可以正常提供,但是如果我尝试在另一个域上调用它们,我就会遇到CORS问题。
有问题的实际文件是静态的.html文件。
我真的不想创建一个包装器控制器来提供静态文件,因为如果我动态地执行它会打开一堆安全问题。
我目前正在使用自定义DelegatingHandler
(不是WebAPI2内置方式)执行CORS,但是此处理程序不会被调用静态文件。
如何拦截WebAPI中的静态文件请求并在适用的情况下应用相关的CORS标头?
答案 0 :(得分:0)
假设您将IAppBuilder.UseFileServer(...)
与FileServerOptions
一起使用来提供静态文件,则可以在其中添加CORS标头。
var options = new FileServerOptions
{
...
StaticFileOptions =
{
OnPrepareResponse = AddCorsHeader
},
...
};
您的处理程序可以是(例如):
private static void AddCorsHeader(StaticFileResponseContext obj)
{
obj.OwinContext.Response.Headers["Access-Control-Allow-Origin"] = "*";
}
范围很广,但对我来说效果很好。