让CORS与Nancy合作

Pas Bisonica

我正在尝试获取与Nancy和CORS一起使用的所有类型的请求。目前,我在请求的末尾添加了一个管道:

            pipelines.AfterRequest.AddItemToEndOfPipeline((ctx) => ctx.Response
            .WithHeader("Access-Control-Allow-Origin", "http://localhost:57515")
            .WithHeader("Access-Control-Allow-Methods", "POST, GET, DELETE, PUT, OPTIONS")
            .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type")
            .WithHeader("Allow", "POST, GET, DELETE, PUT, OPTIONS"))

选项请求返回的状态码为200,这使我相信它执行得很好,但是对于除OPTIONS之外的任何类型的请求,都将失败,并显示405 Method Not Allowed。为了使此功能正常工作,我还需要做客户端还是服务器端其他工作?

我正在使用的客户端库是主干。

提前致谢。

贾斯汀·迪林

我认为您不需要将OPTIONS指定为允许的CORS方法。我从未见过这个场景,我也从未亲自设定过它。浏览器不会抱怨。

另一方面,我在您中有与您类似的设置:

public abstract class MyModule : NancyModule
    protected MyModule(bool hasRazorView = true)
        After.AddItemToEndOfPipeline((ctx) => ctx.Response
            .WithHeader("Access-Control-Allow-Origin", "*")
            .WithHeader("Access-Control-Allow-Methods", "POST,GET")
            .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type"));
        . . . .
    }
}

就我而言,CORS是通过我的GET和POST发送的,但不是通过OPTIONS发送的。我用覆盖了默认的OPTIONS处理Options["/"] = route => new Response()那让其余的管道着火了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章