c# - 让 CORS 与 Nancy 一起工作

标签 c# asp.net api cors nancy

我正在尝试让所有类型的请求与 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。为了让它工作,我还需要在客户端或服务器端做任何其他事情吗?

我使用的客户端库是 backbone。

提前致谢。

最佳答案

我认为您不需要将 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["/"] = route => new Response() 覆盖了默认的 OPTIONS 处理。这让管道的其余部分启动。

关于c# - 让 CORS 与 Nancy 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26171749/

相关文章:

javascript - Google map API 信息窗口

api - 是否有用于获取已停止容器列表的API

c# - 如何在 Blazor Server 中实现自定义授权

c# - 无法使用 linq2sql 从文本更新表

c# - asp.net中的后台函数

asp.net - ASP.NET 2008 Express 不支持 CREATE TABLE SQL 构造或语句

c# - 自动优化 Windows 窗体 InitializeComponent 的性能

c# - 检查修改文件以使用 winscp 上传

c# - 使用 IRegisteredObject 时强制卸载 Appdomain

iOS web api数据管理(单例?)