解决nginx 405 not allowed问题
遇到这个问题的时候在网上找资料,修改配置,重启。。。搞了大半天。
add_header 的使用有些坑你一定会踩到。。。
add_header 之后每遇到{}的时候,在{}之前的所有add_header都会无效,另外,如果最终响应是返回4xx的错误时,所有的add_header均无效。
记录一下,最终的配置,Access-Control-Allow-Headers 的值是每个人的不一样的,看你自己需要允许哪些http_参数都需要添加到这个里面。
error_page 405 =200 $uri;
location / {
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Credentials 'true';
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'Content-Type,Auth-Role,Auth-Client,Auth-Token';
add_header Access-Control-Expose-Headers 'Content-Length,Content-Range';
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Credentials 'true';
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'Content-Type,Auth-Role,Auth-Client,Auth-Token';
add_header Access-Control-Expose-Headers 'Content-Length,Content-Range';
add_header Content-Length 0;
return 204;
}
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?route=$1 last;
break;
}
}