不知道,大家有没有用过
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]);
那就会发现神奇的事情发生了,赶紧试试吧!