前端获取不到后端设置的cookie。

在登录界面:输入账号密码向后端调登录接口,后端设置一个key 为userInfo的cookie。
但是,问题来了。
在vue项目中,本地启动的服务器中,登录的时候没有这个userInfo这个cookie,但是打包后放到测试服务器上,登录的时候就有这个userInfo了。
请问大佬们,这是哪里出的问题?
大佬们快帮帮我,要不后端要和我干架了。。。。

回答:

本地的服务器和接口的服务器不是同一个域吧.
举个栗子:
你的本地服务器是localhost:8080, 然鹅你调用的接口地址是192.168.0.111/api/login这个接口, 后端在处理时它只能将 cookie 存入后端接口的那个域中, 也就是192.168.0.111这里.
这就解释了本地获取不到, 然鹅在测试服务器上可以. 放在测试服务器上就相当于都在后端服务器里面跑起来的web服务.
大致是这个意思

解决方案

这就是跨域了。出于安全,访问不了。将你的资源放到接口地址的那个站点下面访问。

回答:

看登陆的接口调试,一步步进行梳理

回答:

打开network看看响应到底有没有返回cookie,如果没有直接扔脸上不就完了么?

回答:

后端检查一下cookie的存储位置?

回答:

首先肯定是跨域了,跨域时部分浏览器默认不携带cookie,因此为了携带cookie需要设置一下xmlhttprequest的withCrendetails属性,使用vue-resouce时设置如下

Vue.http.options.credentials = true

用axios时,可以在拦截器中设置如下

axios.interceptors.request.use((config) => {
    config.withCredentials = true
    return config
}, (error) => {
    return Promise.reject(error)
})

其次后端允许跨域的header也要设置一个响应的东西

'Access-Control-Allow-Headers' 'X-Requested-With';

同时后端设置需要注意一点,下面这个头不能设置成*号了,要设置成你的域名

'Access-Control-Allow-Origin' '*';

在详细点的可以看看我写的一篇博客https://www.cnblogs.com/heior…

回答:

修改host文件把域名指向自己。然后部署nginx,接口指到后台那边,页面指到自己本地。

回答:

一般这种情况多是因为跨域,路径等等问题。

回答:

本地启动,你接口是代理过去的?

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注