记录一下自己在php中设置cookie遇到的一个问题
我在开发过程中,想从php请求接口中就设置完cookie,然后客户端发送请求之后,不用使用document.cookie来设置cookie,但是在这个过程中,遇到了这个问题。
开始我弄了一个简单的测试页面(ceshi.html)和一个用thinkphp5弄得简单得php接口,然后开启了本机的nginx,页面的地址是http://localhost/dist/ceshi.html,接口的地址是http://localhost:4100/index/index/testAxios,具体代码如下:
这是ceshi.html的使用axios发送的post请求,
[code]const postData = new URLSearchParams(); postData.append('driverName', 'xiaorenyi'); postData.append('phone', '18100171354'); axios.post('http://localhost:4100/index/index/testAxios', postData, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).then( res => { console.log(res); onsole.log(document.cookie); }, err => { console.log(err); } )
这是php接口代码:
[code]public function testAxios() { // $name = Request::instance()->post('driverName'); $res = setcookie('worldludan_keys', 'HelloWorld', time() + 14400, '/'); echo $res; }
做好这两个东西的准备,我就进入了愉快的测试之旅,打开浏览器输入http://localhost/dist/ceshi.html,因为请求是打开浏览器时就自动发送的,所以打开F2,在network中查看到请求已经发送成功,并且有相应的响应数据。但是,但是,我发现cookie并没有我想要的worldludan_keys,度娘了很久,也按照很多帖子进行了修改,有帖子说,你设置cookie的有效期是不是过期了,还有的时setcookie第四个参数path设置的问题,试了很多解决方法,都没有解决掉我的问题。
机缘巧合,我直接在浏览器地址栏输入http://localhost:4100/index/index/testAxios,而不是通过ceshi.html页面去发送请求,这时候我发现cookie成功设置了。我检查了一下两个不同方式的network,区别在于这两种方式的Request Headers(请求头信息)是不一样的,贴上:
这是http://localhost/dist/ceshi.html的请求头信息,
这是http://localhost:4100/index/index/testAxios的请求头信息,
其实我也不知为什么两者的请求头信息差别这么大(希望一些大佬可以给小弟一些解答,感谢~~)。
我们回归正题,看着两个的请求头信息,我突然猜测可能是因为这个请求接口是在 :4100 端口下,所以我setcookie的path="/"会不会有可能只有在4100端口下才可能成功设置cookie呢。
怀着这个猜测,我尝试着把我本地nginx配置改了一下:
[code]location /tp/ { rewrite /tp/(.*) /$1 break; proxy_pass http://127.0.0.1:4100; proxy_set_header Host 127.0.0.1:80; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
就是就是将4100端口重写了到了/tp路径下,就是当访问http:localhost/tp时,会定向到http://localhsot:4100下,这是我们把接口地址,修改成http://localhost/tp/index/index/testAxios,再一次的在地址栏中输入http://localhost/dist/ceshi.html,此时,cookie就成功设置了。
对此我自己的理解时,path为"/"的时候,就会是在80端口下,所以无论是 /dist 还是 /tp ,都是80端口的子目录路径,所以就设置成功了。
因为是菜鸟程序员,所以可能对其中原理的理解不是很透彻,也不知道这么解释是不是正确的,希望有大牛可以指出不对的地方。希望能对遇到相同问题的人给点帮助!
- 点赞
- 收藏
- 分享
- 文章举报
- 记录IDEA创建springMVC时自己遇到的一个访问index.jsp出现404问题的解决+改变默认访问页面
- python+selenium遇到元素定位不到的问题,顺便记录一下自己这次的错误(报错selenium.common.exceptions.NoSuchElementException)...
- 安装Ubuntu时遇到的问题,做一个笔记记录一下
- 记录一下自己32位win7安装Android Studio2.33遇到的问题
- 记录一下自己遇到的问题
- 记录一下这两天遇到的一个navicat导入mysql超级慢的问题
- 记录一下自己使用sed遇到的问题
- Android 开发过程中遇到了一个问题 小记录一下 ERROR: In <declare-styleable> BorderLinearLayout, unable to find attribu
- 记录一下自己解决的一个maven问题
- Eclipse与Mysql连接中遇到的一个问题,让我苦恼好久....(记录自己的菜鸟经历)
- 记录一下自己遇到的问题而已
- 自己遇到的一个单例模式的问题记录
- 记录一下自己装IIS遇到的问题
- 小白记录一下自己学习过程中遇到的for循环异步传参问题以及解决方法
- 最近遇到的mysql php 中的各种中文乱码问题,记录一下
- 最近开发遇到一个传值和引用问题 记录一下
- 今天遇到了Cookie的问题,网上搜来些资料,记录一下备忘!
- 在使用WeifenLuo Suite时遇到的问题,自己记录一下,备忘
- 自己写的一个php利用cookie记录浏览(商品)历史记录的函数
- 关于结构体的一个特殊用法(总觉得遇到的问题就该记录一下哇)