当前位置: 代码网 > 服务器>服务器>Nginx > 如何解决Nginx请求转发将POST变为GET问题

如何解决Nginx请求转发将POST变为GET问题

2024年07月03日 Nginx 我要评论
先说问题我配置了nginx代理,目的是将请求转发到指定的后端,对于普通的json数据,没有什么问题。但是有文件上传的就不一样了,我需要指定到第3方的地址。然而常规的配置完成后,nginx实际的转发动作

先说问题

我配置了nginx代理,目的是将请求转发到指定的后端,对于普通的json数据,没有什么问题。

但是有文件上传的就不一样了,我需要指定到第3方的地址。

然而常规的配置完成后,nginx实际的转发动作改变了我的请求方式

  location  /abd/def/uploadfile/ {
        proxy_pass http://x.com:y/abc/def/uploadfiles;
    }

导致第3方服务器报错如图

解决方法

nginx 配置 307

其作用如下:

1.return 307 是 nginx 配置中的一个指令,用于返回一个指定的 http 状态码,并重定向到客户端发出的相同请求地址。当使用 return 307 > 时,nginx 将会保留客户端发出的原始请求方法和请求体,并以 307 temporary redirect 的状态码将请求重定向回客户端。

2.307 状态码表示临时重定向,客户端应该继续使用原始的请求方式和请求体重新发送请求。与 302 found 和 303 see other 不同的是,307 状态码要求客户端不要更改请求方式(例如,post 转为 get),并且要保持请求的完整性。

3.在某些情况下,您可能希望通过 return 307 来实现临时重定向,同时保留原始请求方式和请求体。这可以用于让客户端重新发送相同请求,而不会丢失任何数据或更改请求方式。

配置如下

  location  /abd/def/uploadfile/ {
     return 307 http://x.com:y/abc/def/uploadfiles;
    }

最后转发成功!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com