如题,没试过,感觉理论上可以,谁讲一下这个问题
1
kchum 2015-04-07 23:46:58 +08:00
试一下都出来了,可以。。
|
2
h4x3rotab 2015-04-08 00:16:06 +08:00 1
问题不在于能否互相访问,而是理解其中原理。php是运行在服务器端的,他的唯一作用就是接受http请求,执行php脚本,生成html页面,回复给浏览器。浏览器收到了服务器发来的html页面之后会呈现出来,同时也会执行js脚本。
那么cookies是怎么同步的?浏览器内每一个域名都会保存一些cookies,值是由你设定的,js可以对浏览器内的cookies读写访问。但是呢,每一次浏览器访问服务器的时候,php都会接收到一个http请求,这个请求内会包含浏览器内存储的cookies,所以说php在生成html页面的时候,也可以取得用户这边的cookies。在php生成html页面的时候,同时会生成一段http响应,响应中就包含了一个叫Set-cookie的属性,浏览器收到这个响应就会去修改内部的cookies。 所以说本身cookies是只存在于浏览器的一段文本,可以由js访问。只有在发生http请求的时候,这段cookies才会传递给服务器,伺候服务器也可以返回Set-cookie来修改浏览器的cookies。这不能叫做互相读取,而是一种传递机制。 |
3
ine181x 2015-04-08 00:16:09 +08:00 via iPhone
服务器端可以设置httponly的cookie,js不能访问
|
4
NewYear 2015-04-08 00:21:52 +08:00 1
错错错!!!!
至少不完全正确,Cookie有一个属性叫httponly,说简单点就是不是服务器专用。JS想读取到!做梦!在IE6上面都是做梦!读都读不到,还想操(作),就是做梦! 比如常见的维持session会话用的cookie phpsessionid,aspsessionid。 所以很多讲XSS偷cookie的,都喜欢说可以偷走这个会话id,其实是偷不走的。除非程序员傻了,直接用cookie验证而不是用sessionid,用cookie也就算了,竟然不打httponly标记! |
5
NewYear 2015-04-08 00:26:11 +08:00
|
6
NewYear 2015-04-08 00:31:16 +08:00
顺便说明下,对此怀疑又想测试又怕麻烦的,请移步google首页,从隐私模式打开,看开发者工具,可以很明显的看到有2个cookie,一个就打了httponly标记,所以js只能读取到其中一个,不能读另一个,顺便送上读取全部cookie的js代码
document.cookie |