某些移动设备向我们的服务器发送以下不正确的请求:
GET / HTTP/1.0
Accept:
User-Agent : xxx
空的Accept标头导致我们的Ruby on Rails服务器返回500错误.
在Apache中,以下指令允许我们在将标头发送到应用程序RoR服务器之前重写标头,以便处理损坏的设备:
RequestHeader edit Accept ^$"*/*" early
我们目前正在建立Nginx,但实现相同的解决方案证明是困难的.我们可以设置:
proxy_set_header Accept */*;
但是,这似乎必须无条件地完成.无论何时尝试:
if ($http_accept !~ ".") {
proxy_set_header Accept */*;
}
它抱怨消息:
"proxy_set_header" directive is not allowed here
那么,使用Nginx,在将请求发送到应用服务器之前,如何将HTTP Accept标头设置为* / *?
试试这个
set $acceptHeader $http_accept;
if ($acceptHeader !~ ".") {
set $acceptHeader '/';
}
proxy_set_header Accept $acceptHeader;