NancyFx 不为 OPTIONS 请求返回 CORS
NancyFx not returning CORS for OPTIONS requests
目前我正在覆盖 autofac boostrapper 中的应用程序启动以添加到下面的 headers。
protected override void ApplicationStartup(ILifetimeScope container, IPipelines pipelines)
{
pipelines.AfterRequest.AddItemToEndOfPipeline(ctx =>
{
ctx.Response
.WithHeader("Access-Control-Allow-Origin", "*")
.WithHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
.WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-Type, Authorization");
});
base.ApplicationStartup(container, pipelines);
}
在所有主要路线上 headers 都已正确连接。但是,当从 chrome、postman 或 fiddler 发送 OPTIONS pre-flight 请求时,未附加 headers。
这是一个典型的 get 调用:
这是浏览器请求
现在在浏览器请求中我得到了错误的允许集。
就上下文而言,我目前使用的是 clinteastwood 版本,但也有稳定版本。我正在利用 AutofacBootstrapper、Owin & Owin.StatelessAuth.
我也尝试安装 Microsoft.Owin.Cors
并使用 app.UseCors(CorsOptions.AllowAll);
但没有成功
我显然做错了什么,我只是不确定是什么...
任何人都可以解释这种行为吗?
对于那些感兴趣的人,一个明显的答案是将以下内容放在 web.config。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Accept, Origin, Content-Type, Authorization" />
</customHeaders>
</httpProtocol>
</system.webServer>
但我更好奇关于我哪里出错的行为或我的实现
目前我正在覆盖 autofac boostrapper 中的应用程序启动以添加到下面的 headers。
protected override void ApplicationStartup(ILifetimeScope container, IPipelines pipelines)
{
pipelines.AfterRequest.AddItemToEndOfPipeline(ctx =>
{
ctx.Response
.WithHeader("Access-Control-Allow-Origin", "*")
.WithHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
.WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-Type, Authorization");
});
base.ApplicationStartup(container, pipelines);
}
在所有主要路线上 headers 都已正确连接。但是,当从 chrome、postman 或 fiddler 发送 OPTIONS pre-flight 请求时,未附加 headers。
这是一个典型的 get 调用:
这是浏览器请求
现在在浏览器请求中我得到了错误的允许集。
就上下文而言,我目前使用的是 clinteastwood 版本,但也有稳定版本。我正在利用 AutofacBootstrapper、Owin & Owin.StatelessAuth.
我也尝试安装 Microsoft.Owin.Cors
并使用 app.UseCors(CorsOptions.AllowAll);
但没有成功
我显然做错了什么,我只是不确定是什么...
任何人都可以解释这种行为吗?
对于那些感兴趣的人,一个明显的答案是将以下内容放在 web.config。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Accept, Origin, Content-Type, Authorization" />
</customHeaders>
</httpProtocol>
</system.webServer>
但我更好奇关于我哪里出错的行为或我的实现