• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

javascript – 手机客户端权限验证cookie跨域问题

php 搞代码 4年前 (2022-01-25) 19次浏览 已收录 0个评论
文章目录[隐藏]

最近试着做hybird app,遇到的第一件事就是跨域session丢失的问题,不知道手机客户端现在都流行怎么做登陆状态保存?有哪个大牛愿意说说吗?

我遇到这个问题想到的方法是,php验证通过后session设置的session id是存在cookie里面,那我直接在验证通过以后用session_id()(这个函数会返回设置的sessionid)把值打印出来,然后客户端可以直接取到。。。
但是这之后就出问题了,我用

<code>document.cookie = 'PHPSESSID='+返回的sessionid</code>

这样设置的cookie 的作用域是当前域名下的当前路径
设置好后可以在chrome里看到,然后夸域请求页面,发现没有带cookie….

至此我觉得是因为domain设置的不对所欲带不上cookie然后,我在后面加domain path就不会设置成功

<code>document.cookie = 'PHPSESSID='+返回的sessionid +‘;domain=a.com;path=’test/</code>

这样做了后刷新页面后发现不能设置cookie了(可能是chrome出于安全考虑吧)。

我确定服务器端是设置好的,就是这里用ajax不能设置cookie,然后网上查了查,说ajax可以自己设置cookie我就照做了

<code>            $http({                headers:{                cookie:'PHPSESSID=192fac5eb0b9970dfedbb20773013e91'            },                xhrFields: {                    withCredentials: true                },                crossDomain:true,                method:'get',                url:server.domain +server.api + '/resumelogin'            }).success(function(d){                console.log(d);            })</code>

chrome控制台打印Refused to set unsafe hea本#文来源gaodai$ma#com搞$$代**码网$der “cookie”
这个问题看了下,stackoverflow上有答案不过也含含糊糊的

================================
现在已经没什么想法了,真不知道我这个想法是不是不对?是不是应该换个思路去做这个事呢?怎么保存登陆用户的状态?

回复内容:

最近试着做hybird app,遇到的第一件事就是跨域session丢失的问题,不知道手机客户端现在都流行怎么做登陆状态保存?有哪个大牛愿意说说吗?

我遇到这个问题想到的方法是,php验证通过后session设置的session id是存在cookie里面,那我直接在验证通过以后用session_id()(这个函数会返回设置的sessionid)把值打印出来,然后客户端可以直接取到。。。
但是这之后就出问题了,我用

<code>document.cookie = 'PHPSESSID='+返回的sessionid</code>

这样设置的cookie 的作用域是当前域名下的当前路径
设置好后可以在chrome里看到,然后夸域请求页面,发现没有带cookie….

至此我觉得是因为domain设置的不对所欲带不上cookie然后,我在后面加domain path就不会设置成功

<code>document.cookie = 'PHPSESSID='+返回的sessionid +‘;domain=a.com;path=’test/</code>

这样做了后刷新页面后发现不能设置cookie了(可能是chrome出于安全考虑吧)。

我确定服务器端是设置好的,就是这里用ajax不能设置cookie,然后网上查了查,说ajax可以自己设置cookie我就照做了

<code>            $http({                headers:{                cookie:'PHPSESSID=192fac5eb0b9970dfedbb20773013e91'            },                xhrFields: {                    withCredentials: true                },                crossDomain:true,                method:'get',                url:server.domain +server.api + '/resumelogin'            }).success(function(d){                console.log(d);            })</code>

chrome控制台打印Refused to set unsafe header “cookie”
这个问题看了下,stackoverflow上有答案不过也含含糊糊的

================================
现在已经没什么想法了,真不知道我这个想法是不是不对?是不是应该换个思路去做这个事呢?怎么保存登陆用户的状态?

不要用cookies做手机端的auth, 现在一般用OAuth2, 即token authentication。
简单的说流程就是
1. 客户端传登录信息(比如邮箱,密码)到服务器
2. 确认信息正确后,产生access token, 比较普遍的是JWT(JSON Web Token),给一个过期时间,然后传给用户
3. 客户端存着这个access token,每次发请求的时候都要把这个token放到header里面

为什么用这样子的access token是安全的,JWT的好处是什么,网上文章很多,随便贴一个https://stormpath.com/blog/the-ultimate-guide-to-mobile-api-security/


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:javascript – 手机客户端权限验证cookie跨域问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址