NancyFx没有为OPTIONS请求返回CORS

时间:2017-05-02 14:20:44

标签: cors nancy

目前,我在autofac boostrapper中覆盖了应用程序启动,以添加下面的标题。

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);
        }

在所有主要路由上正确连接标头。但是,当从chrome,postman或fiddler发送OPTIONS转航前请求时,标题不会附加。

这是一个典型的来电:

Get request and response from Nancy

这是浏览器请求

enter image description here

现在,在浏览器请求中,我找回了错误的Allow。

对于上下文,我目前正在使用clinteastwood版本,但也有稳定版本。我正在利用AutofacBootstrapper,Owin& Owin.StatelessAuth。

我还尝试安装Microsoft.Owin.Cors并使用app.UseCors(CorsOptions.AllowAll);但没有成功

我显然做错了什么,我只是不确定是什么......

任何人都可以解释这种行为吗?

1 个答案:

答案 0 :(得分:0)

对于那些感兴趣的人,一个明显的答案是将以下内容放在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>

但我对行为或我对错误发生地的实施更加好奇