Django rest_framework.APIView返回方法 GET” 不被允许,requests.post提交却提示不能get

:网站编辑 2024-03-07 15:00:56 :19

django rest_framework.APIView返回方法 GET” 不被允许,requests.post提交却提示不能get

 

产生原因分析


如果我们访问的是线上的接口,线上的nginx一般都会对http访问做一个302重定向,跳转为https访问。
如果我们正常访问一个页面,它会把http跳转为https,之后由https访问的接口就都是https的了。但如果我们用requests直接访问接口,nginx会响应一个302状态码,并且把重定向的地址存放在响应头Location中。我们的客户端(一般为浏览器,此处为requests)收到302状态码后就会去找Location这个响应头,完成跳转操作。

产生原因验证
通过跳板机查看了测试环境nginx的配置:
rewrite模块最后的flag是requests,是301重定向,并不是我们推测的302。不过301处理请求的方式是与302相同的,会把post请求转为get请求。

解决方法
如果我们不指定前缀,则默认是http://,因此解决方法是在我们的请求url最前面加上https:// 即可

django rest_framework.APIView返回方法 GET” 不被允许,requests.post提交却提示不能get

本文编辑:admin
下一篇:没有内容了
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.