我在 Ubuntu 12.04 上使用 nginx,是否有任何我可以通过包管理器安装的模块,使 nginx 神奇地支持 HTTP OPTIONS 标头请求而不是返回 HTTP 405?如果有帮助的话,我想避免额外的编译步骤。
答案1
我仍然想要一个真实的解决这个问题,但目前我发现这我正在使用以下解决方案:
地点 / { 如果 ($request_method = OPTIONS ) { 添加标题内容长度0; 添加标题内容类型文本/纯文本; 添加标头访问控制允许来源*; add_header Access-Control-Allow-Headers'来源,x-requested-with,内容类型,接受'; 添加标头访问控制允许方法'GET,POST'; 返回200; } }
我允许所有 CORS 请求这是我的本地主机,但请注意,这是为了您自己的安全,因此不要太过宽容Access-Control-Allow-Origin
。
此外,我正在使用 angularjs,POST
即使请求OPTIONS
已获得适当的权限,请求也会被取消。不知道整个预检过程有什么意义。无论如何,在位置块外添加访问控制行解决了这个问题。像这样:
地点 / { try_files $uri $uri/ /index.php?$query_string; 如果 ($request_method = OPTIONS ) { 添加标题内容长度0; 添加标题内容类型文本/纯文本; 添加标头访问控制允许来源*; add_header Access-Control-Allow-Headers'来源,x-requested-with,内容类型,接受'; 添加标头访问控制允许方法'GET,POST'; 返回200; } } 添加标头访问控制允许来源*; add_header Access-Control-Allow-Headers'来源,x-requested-with,内容类型,接受'; 添加标头访问控制允许方法'GET,POST';