今天和移动端对接的时候,移动端把一些公共参数放在了 header 了,
然而在 laravel 中使用
\Illuminate\Http\Request; //这个是获取所有header信息 Request::header(); //这个是获取header里面的version参数值 Request::header('version');
这些是可以满足需求获取到参数的。
但是偏偏这次出问题了。新加的参数怎么都是取不到,还以为是什么缓存问题,或者是哪里去除了,又或者带参数有个数限制。
结果调试了半天发现是移动端传参数的时候是不能在命名参数中带 _ (下划线的),
如 app_version,book_id 这样的是有问题的
需要去除下划线,或换成 - 都是可以的!
遇见这个坑记录一下,希望大家别踩啦!
-------------------------------------------------------------------
ps:今天调试中又发现 header 中是不能带 中文 过来的,如果带 中文 过来后端在 header 头中是拿不到值的。
初步测试是这样,如果有问题请大家指正哈!
-----------------------------------------------------------------
后续发现是Nginx中配置限制了这个,
解决方法:
1:配置中http部分 增加underscores_in_headers on; 配置
2:用减号-替代下划线符号_,避免这种变态问题。nginx默认忽略掉下划线可能有些原因。