我正在尝试获取与 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()
。这导致管道的其余部分着火。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)