使用 NancyFX 获取请求在 CORS 中不起作用
Get request not working in CORS with NancyFX
我在使用 CORS 请求和 NancyFx 时遇到了一些问题。
我有一些 GET 请求在工作,但不是每次都有效。
因为我使用 Content-Type : application/json
我的请求“不是简单类型的请求”所以他们有预检 OPTIONS
请求。
预检有效,但有时 GET
请求遵循 returns 404(未找到我要求的路线),有时我得到我的数据。
这是我在 Nancyfx 中的 CORS 响应:
protected override void RequestStartup(TinyIoCContainer requestContainer, IPipelines pipelines, NancyContext context)
{
base.RequestStartup(requestContainer, pipelines, context);
pipelines.AfterRequest.AddItemToEndOfPipeline((ctx) =>
{
ctx.Response.WithHeader("Access-Control-Allow-Origin", "*")
.WithHeader("Access-Control-Allow-Methods", "POST, GET, DELETE, PUT, OPTIONS, PATCH")
.WithHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
.WithHeader("Access-Control-Max-Age", "3600");
});
}
我正在点击的请求如下所示:
http://localhost:3579/api/v2/vnos/{idVno:guid}/vnos
(并且始终设置 idVno)。
这是我在控制台中得到的:
这是我在“网络”选项卡中获得的内容:
我在客户端中添加的唯一特定 header 是 Authorization
header。
应在应用程序启动时调用 OPTIONS
处理程序,而不是像您那样请求启动,否则如果请求不是 2XX
,它将被忽略。
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
{
pipelines.AfterRequest += (ctx) =>
{
ctx.Response.WithHeader("Access-Control-Allow-Origin", "*")
.WithHeader("Access-Control-Allow-Methods", "POST, GET, DELETE, PUT, OPTIONS, PATCH")
.WithHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
.WithHeader("Access-Control-Max-Age", "3600");
}
}
有关详细信息,请参阅 https://github.com/NancyFx/Nancy/issues/1422。
我在使用 CORS 请求和 NancyFx 时遇到了一些问题。 我有一些 GET 请求在工作,但不是每次都有效。
因为我使用 Content-Type : application/json
我的请求“不是简单类型的请求”所以他们有预检 OPTIONS
请求。
预检有效,但有时 GET
请求遵循 returns 404(未找到我要求的路线),有时我得到我的数据。
这是我在 Nancyfx 中的 CORS 响应:
protected override void RequestStartup(TinyIoCContainer requestContainer, IPipelines pipelines, NancyContext context)
{
base.RequestStartup(requestContainer, pipelines, context);
pipelines.AfterRequest.AddItemToEndOfPipeline((ctx) =>
{
ctx.Response.WithHeader("Access-Control-Allow-Origin", "*")
.WithHeader("Access-Control-Allow-Methods", "POST, GET, DELETE, PUT, OPTIONS, PATCH")
.WithHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
.WithHeader("Access-Control-Max-Age", "3600");
});
}
我正在点击的请求如下所示:
http://localhost:3579/api/v2/vnos/{idVno:guid}/vnos
(并且始终设置 idVno)。
这是我在控制台中得到的:
这是我在“网络”选项卡中获得的内容:
我在客户端中添加的唯一特定 header 是 Authorization
header。
应在应用程序启动时调用 OPTIONS
处理程序,而不是像您那样请求启动,否则如果请求不是 2XX
,它将被忽略。
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
{
pipelines.AfterRequest += (ctx) =>
{
ctx.Response.WithHeader("Access-Control-Allow-Origin", "*")
.WithHeader("Access-Control-Allow-Methods", "POST, GET, DELETE, PUT, OPTIONS, PATCH")
.WithHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
.WithHeader("Access-Control-Max-Age", "3600");
}
}
有关详细信息,请参阅 https://github.com/NancyFx/Nancy/issues/1422。