不允许使用Nginx 405方法,即使有JSON响应
我的nginx看起来像不允许使用Nginx 405方法,即使有JSON响应,nginx,nginx-location,Nginx,Nginx Location,我的nginx看起来像 error_page 401 @json401; location @json401 { try_files /errors/401.json; internal; } { "status": 401, "error": "Authorization required.", "detail": "Please log in first before accessing this page." } 我的errors/401.json看起来像 erro
error_page 401 @json401;
location @json401 {
try_files /errors/401.json;
internal;
}
{
"status": 401,
"error": "Authorization required.",
"detail": "Please log in first before accessing this page."
}
我的errors/401.json
看起来像
error_page 401 @json401;
location @json401 {
try_files /errors/401.json;
internal;
}
{
"status": 401,
"error": "Authorization required.",
"detail": "Please log in first before accessing this page."
}
我知道nginx不能为非GET请求返回静态页面,但我正在尝试返回JSON
现在,当我对具有401响应的端点执行POST请求时,仍然会得到一个不允许的405方法(get请求正确返回JSON文件)。我还尝试添加default_-type应用程序/json
,但仍然得到了405
非常感谢您的帮助。
如果内部重定向期间不需要更改URI和方法,则可以将错误处理传递到指定位置:
因此,当您使用命名位置时,它接收与原始位置(POST)相同的方法,并且try_files
仅接受GET方法,因此您得到405
您应该使用常规(未命名)位置,因为在这种情况下,任何方法都将替换为GET:
这会导致内部重定向到指定的uri,客户端请求方法更改为“GET”(对于除“GET”和“HEAD”以外的所有方法)
以下示例按照您的预期工作:
error_page 401 /json401;
location /json401 {
internal;
default_type application/json;
try_files /errors/401.json =401;
}
location = /test {
return 401;
}
如果内部重定向期间不需要更改URI和方法,则可以将错误处理传递到指定位置:
因此,当您使用命名位置时,它接收与原始位置(POST)相同的方法,并且try_files
仅接受GET方法,因此您得到405
您应该使用常规(未命名)位置,因为在这种情况下,任何方法都将替换为GET:
这会导致内部重定向到指定的uri,客户端请求方法更改为“GET”(对于除“GET”和“HEAD”以外的所有方法)
以下示例按照您的预期工作:
error_page 401 /json401;
location /json401 {
internal;
default_type application/json;
try_files /errors/401.json =401;
}
location = /test {
return 401;
}