jcu*_*bic 14 javascript cookies xmlhttprequest
我有这个代码:
window.onload = function() {
document.cookie = 'foo=bar; expires=Sun, 01 Jan 2012 00:00:00 +0100; path=/';
var xhr = new XMLHttpRequest();
xhr.open("GET", "/showcookie.php",true);
xhr.setRequestHeader("Cookie", "foo=quux");
xhr.setRequestHeader("Foo", "Bar");
xhr.setRequestHeader("Foo", "Baz");
xhr.withCredentials = true;
var pre = document.getElementById('output');
xhr.onreadystatechange = function() {
if (4 == xhr.readyState) {
pre.innerHTML += xhr.responseText + "\n";
}
};
xhr.send(null);
};
Run Code Online (Sandbox Code Playgroud)
这个/showcookie.php
<?php
print_r($_COOKIE);
?>
Run Code Online (Sandbox Code Playgroud)
它总是显示出来
Array
(
[Host] => localhost
[User-Agent] =>
[Accept] =>
[Accept-Language] => pl,en-us;q=0.7,en;q=0.3
[Accept-Encoding] => gzip,deflate
[Accept-Charset] => ISO-8859-2,utf-8;q=0.7,*;q=0.7
[Keep-Alive] => 115
[Connection] => keep-alive
[foo] => Baz
[Referer] =>
[Cookie] => foo=bar
)
Array
(
[foo] => bar
)
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu上使用Firefox 3.6.13,Opera 11.00和Chromium 9.0.
是否有人有同样的问题或者修改Cookie标头是不可能的.
Tgr*_*Tgr 26
Cookie标头是几个中无法修改的标头之一XMLHttpRequest.从规格:
如果header是以下标头之一的不区分大小写的匹配,则终止[执行
setRequestHeader方法]:
- 接收字符
- 接受编码
- 连接
- 内容长度
- 曲奇饼
- COOKIE2
- 内容传输编码
- 日期
- 期望
- 主办
- 活着
- 引荐
- TE
- 预告片
- 传输编码
- 升级
- 用户代理
- 通过
...或者如果标头的开头是Proxy-或Sec-的不区分大小写匹配(包括标头只是代理或秒).
上述标题由用户代理控制,以便控制传输的这些方面.这在一定程度上保证了数据完整性.不允许将以Sec-开头的头名称设置为允许新的头文件被保证不会来自XMLHttpRequest.