http - 覆盖 NancyFX/Visual Studio Web 服务器中的 OPTIONS 响应

标签 http rest cors nancy http-options-method

我已经使用 NancyFX 构建了一个 RESTful Web 服务,现在我正尝试从一个单独的域发布该服务。当然,当我这样做时,我在控制台中看到失败的 OPTIONS 消息,因为这是跨站点 POST,我需要确保 Nancy 正确响应浏览器发送的 OPTIONS 消息。但是,当我在 Nancy 模块中定义路线时:

this.Options["/options/"] = _ => this.OptionsRequest();

private dynamic OptionsRequest()
{
         return this.Response.AsJson(Request)
               .WithHeader("Access-Control-Allow-Origin", "*")
               .WithHeader("Access-Control-Allow-Methods", "POST")
               .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type");
}

代码永远不会被击中。我可以在调试器中的 OptionsRequest() 方法上设置断点,并看到代码永远不会被命中。不过,我可以在 postman 中发出 OPTIONS 请求,服务器会返回响应(有趣的是,它似乎从所有 URI 返回响应,而不仅仅是我定义的/options/路由)。

我是否必须重写默认的 Nancy OPTIONS 行为才能指定 OPTIONS 的路由,或者这是否与 Visual Studio 开发 Web 服务器 (Casini) 中托管的服务有关?我已经尝试了所有我能想到的方法,但仍然困惑于为什么我无法定义这个特定动词的行为。

最佳答案

事实证明,这是 Nancy v0.17.1 中的一个错误(请参阅 https://github.com/NancyFx/Nancy/pull/1093 )。升级到 0.18.0 解决了该问题并允许我的 OPTIONS 路由正常工作。

关于http - 覆盖 NancyFX/Visual Studio Web 服务器中的 OPTIONS 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17748639/

相关文章:

java - HTTP:要添加什么 header 才能设置字符集?

javascript - 如何使用 JavaScript 监控浏览器发出的请求?

ruby-on-rails - 添加/删除 has-many-through 关联的 RESTful 方式

javascript - 如何从浏览器向 Node.js 服务器发送大文件?

http - 在单个 VM 中提供两个用 Google Go 编写的网站

java - 如何使用 java 从太阳风 Orion Rest API 获取 JSON 数据

ruby-on-rails - 使用 ActiveResource 在 Rails 中使用非 REST API

angular - OPTIONS 获取 401 - 预检请求未通过 Apache 上的访问控制检查

maven - 添加 CORS 支持后 Tomcat 应用程序启动失败

php - PHP 和 Apache 中的多个刷新语句