小编man*_*u_v的帖子

nginx 条件接受标头

一些移动设备向我们的服务器发送以下不正确的请求:

GET / HTTP/1.0
Accept:
User-Agent : xxx
Run Code Online (Sandbox Code Playgroud)

空的 Accept 头会导致我们的 Ruby on Rails 服务器返回 500 错误。

在 Apache 中,以下指令允许我们在将标头发送到应用程序 RoR 服务器之前重写标头,以处理损坏的设备:

    RequestHeader edit Accept ^$ "*/*" early
Run Code Online (Sandbox Code Playgroud)

我们目前正在设置 nginx,但事实证明,实现相同的解决方法很困难。我们能够设置:

  proxy_set_header Accept */*;
Run Code Online (Sandbox Code Playgroud)

然而,这似乎必须无条件地完成。每当尝试做:

if ($http_accept !~ ".") {
  proxy_set_header Accept */*;
}
Run Code Online (Sandbox Code Playgroud)

它抱怨消息:

"proxy_set_header" directive is not allowed here
Run Code Online (Sandbox Code Playgroud)

那么,使用 nginx,我们如何*/*在将请求发送到应用服务器之前将HTTP Accept 标头设置为空?

nginx http-headers ruby-on-rails

3
推荐指数
1
解决办法
3157
查看次数

标签 统计

http-headers ×1

nginx ×1

ruby-on-rails ×1