我的iOS应用程序当前通过http POST访问域A,但我想将所有请求转发到域B.
如果我使用通常的重写^ /(.*)$http:// mydomain / $1 permanent; POST数据似乎迷失了.
如何使用Nginx将HTTP POST数据传递到其他域?
请尝试使用
the reverse proxy support.示例位置部分将是:
原文链接:https://www.f2er.com/ubuntu/348922.htmllocation / { proxy_pass http://localhost:8080; proxy_redirect http://localhost:8080/ /; proxy_read_timeout 60s; # May not need or want to set Host. Should default to the above hostname. proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
此示例将对此服务器块的所有请求传递给在localhost:8080上运行的第二个服务器.这样可以保留POST,如果它成为问题,也应保留其他请求类型.
问题是外部重定向永远不会重新发送POST数据.这写入the HTTP spec(查看3xx部分).任何执行此操作的客户端都违反了规范.
If the 301/302 status code is received in response to a request other than GET or HEAD,the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user,since this might change the conditions under which the request was issued.
我很确定大多数浏览器只是强制重定向的请求是GET请求来实现这一点.从理论上讲,规范确实允许浏览器询问用户是否重定向POST数据,但我不知道目前有什么.