在将web项目部署到本地IIS之前,我已经为它启用了CORS。但是,当我试图从角调用控制器方法时,我会得到以下错误:
SEC7128: CORS响应不允许多个访问控制源标头.
为了在我的web上启用CORS,我将这一行代码添加到WebApi.config中:
config.EnableCors();我还将这个属性添加到控制器类中:
[EnableCors(origins: "http://localhost:53720", headers: "*", methods: "*")]发布于 2017-04-28 14:52:48
我设法从我的web.config中删除了这一行,从而解决了这个问题:
<add name="Access-Control-Allow-Origin" value="*" />发布于 2017-04-28 11:41:29
就像错误一样,不允许标头。若要允许该标题,您应该添加标题:
访问-控制-允许-头
在其中,您需要增加价值:
访问-控制-允许-来源
除此之外,您还需要添加其他标题名称,您希望在响应中使用这些名称。
例如,如果您想使用MyAwesomeHeader头:
{"Access-Control-Allow-Headers": "Access-Control-Allow-Origin, MyAwesomeHeader"}
发布于 2017-04-28 12:18:56
"*" as Access-Control-Allow-Origin并不适用于所有浏览器。为了能够从任何站点调用Web,人们可以将Origin HTTP请求头作为一个允许的来源,将其复制到Access-Control-Allow-Origin中。这可以通过以下OWIN中间件来实现:
class CORSAnyOriginMiddleware : OwinMiddleware
{
const string OriginHeader = "Origin";
const string AllowOriginHeader = "Access-Control-Allow-Origin";
public CORSAnyOriginMiddleware(OwinMiddleware next) : base(next)
{ }
public override async Task Invoke(IOwinContext context)
{
await Next.Invoke(context);
if (context.Response?.Headers?.ContainsKey(AllowOriginHeader) ?? false &&
(context.Request?.Headers?.ContainsKey(OriginHeader) ?? false))
context.Response.Headers[AllowOriginHeader] =
context.Request.Headers[OriginHeader];
}
}示例使用(在Startup.Configuration(IAppBuilder appBuilder)中):
appBuilder.Use<CORSAnyOriginMiddleware>();https://stackoverflow.com/questions/43678437
复制相似问题