【问题标题】:NancyFx not returning CORS for OPTIONS requestsNancyFx 没有为 OPTIONS 请求返回 CORS
【发布时间】:2017-09-30 02:50:21
【问题描述】:

目前我正在覆盖 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 调用:

这是浏览器请求

现在在浏览器请求中,我返回了错误的允许集。

就上下文而言,我目前正在使用 clinteastwood 版本,但在稳定版本中也有这个。我正在利用 AutofacBootstrapper、Owin 和 Owin.StatelessAuth。

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

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

谁能解释这种行为?

【问题讨论】:

  • web.config 中是否有任何内容可以更改允许标头?
  • 是的,我可以通过配置轻松添加标题,但对这种行为的原因感到好奇。

标签: cors nancy


【解决方案1】:

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

但我更好奇我的行为或我的实现,我哪里出错了

【讨论】:

    猜你喜欢
    • 2012-12-22
    • 1970-01-01
    • 2015-06-11
    • 2015-09-01
    • 2019-07-14
    • 2019-03-15
    • 2012-12-31
    • 2015-03-01
    • 2018-11-19
    相关资源
    最近更新 更多