thinkphp5.0使用路由之后,post请求的参数丢失 发布日期:2020-05-19 11:00:43     博主推荐★

不知道,大家有没有用过

Route::post('/:do', '/request/call/funName/:do',['ext'=>'py']);

以上的意思,就是当你请求,本项目的www.abc.com/getAbc.py自动转换到www.abc.com/request/call/funName/getAbc

我们注意到这里到tp的底层是一个header(301...);header("Location:xxxx")这样的代码,这样就比较尴尬了,当我们是get请求的时候,看起来没问题;

但是当我们是需要post请求的时候,就会发现页面跳转之后,post参数丢失了,经过度娘和google我们发现很少有人遇到或者说解决问题,只能自己想办法,通过对状态码的分析,我们发现



HTTP/1.1 301 Moved Permanently: 301状态码在HTTP 1.0和HTTP 1.1规范中均代表永久重定向,对于资源请求,原来的url和响应头中location的url而言,资源应该对应location中的url。对于post请求的重定向,还是需要用户确认之后才能重定向,并且应该以post方法发出重定向请求。

HTTP/1.1 302 Found :在HTTP1.0规范中,302表示临时重定向,location中的地址不应该被认为是资源路径,在后续的请求中应该继续使用原地址。

HTTP/1.1 303 See Other对于POST请求,它表示请求已经被处理,客户端可以接着使用GET方法去请求Location里的URI。

HTTP/1.1 307 Temporary Redirect对于POST请求,表示请求还没有被处理,客户端应该向Location里的URI重新发起POST请求。


所以最终,我们发现307好像是我们想要的一种状态,他能把post的参数带过来重新发起请求,于是我们修改路由配置

Route::post('/:do', '/request/call/funName/:do',['ext'=>'py','status'=>307]);

那就会发现神奇的事情发生了,赶紧试试吧!

博文地址:https://blog.ahamu.cn/blog/detail.html?id=339
   
推荐文章
  • 1
    phper转java记录篇-spring boot
    2020/06/10
  • 2
    thinkphp5.0使用路由之后,post请求的
    2020/05/19
  • 3
    springboot单元测试aop失效
    2020/05/15
  • 4
    脑海中的JVM
    2020/05/12
  • 5
    IDEA搜索插件时显示search results
    2020/05/12
  • 6
    spring boot 配置加载源码查找
    2020/04/20
  • 7
    通过javap命令分析java汇编指令
    2020/04/16
  • 8
    IDEA小知识:查看JVM内存使用情况的步骤
    2020/04/16
  • 9
    springboot-加载自定义的properti
    2020/04/14
  • 10
    Jenkins执行shell脚本无法启动子进程解决
    2020/04/03
  • 11
    mac idea激活找专业的
    2020/04/02
  • 12
    Jenkins + DockerSwarm 实现弹
    2020/03/31
  • 13
    mac swarm学习过程
    2020/03/31
  • 14
    spring cloud
    2020/03/18
  • 15
    JAVA开发中遇到的问题记录002
    2020/03/12
  • 16
    JAVA开发中遇到的问题记录001
    2020/03/07
  • 17
    php -i查看信息
    2020/02/23
  • 18
    phpStorm中使用xdebug工具调试dock
    2019/12/09
  • 19
    讲的比较好的B+树执行原理的文章
    2019/12/09
  • 20
    如何用Dockerfile构建镜像
    2019/12/09
最喜标签
NYOJ 面试 AJAX ping CentOS 灰度算法 YII2