【发布时间】:2016-01-29 09:15:19
【问题描述】:
我使用 jquery 的 ajax 方法将 POST 命令发送到另一台服务器。我在我的 Firefox 中设置了 CorsE 插件,我可以发送 POST 命令,并且它成功返回。但是,我尝试使用用户名和密码登录,一切正常,除了我使用 ajax 方法发送的 cookie 值不是浏览器设置使用的值。
其中一个参数是“headers”,我用我想要的值设置cookie,即“valueA=bla; valueB=bla2”,但是当我从inspect元素检查网络选项卡时,我看到firefox发送带有另一个 cookie 的 POST,即“valueA=tal; valueB=tal2”(我编的)。
如何强制 firefox 使用我最初设置的值?
我的 ajax 调用是:
$.ajax({
url: url,
type: "POST",
data: {
"email": email,
"pass": pass
},
headers: {
"Host": "www.someexample.com",
"User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0",
"Accept-Language": "pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3",
"DNT": "1",
"Connection": "keep-alive",
"Content-Length": 47,
"Accept": "application/json, text/javascript, */*; q=0.01",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36",
"Content-Type": "application/x-www-form-urlencoded",
"Referer": url,
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4",
"Cookie": "PHPSESSID=abcdefgh; SERVERID=ookkuu;"
},
xhrFields: {
withCredentials: true
},
success: function (data) {
console.log(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("Status: " + textStatus);
console.log("Error: " + errorThrown);
}
发送后,PHPSESSID 和 SERVERID 的值与之前设置的值不同。我想强制 Firefox 发送相同的值。
【问题讨论】:
-
W3C 规范将 Cookie 列为不允许手动设置 XMLHttpRequest 的标头之一,请参阅 w3.org/TR/XMLHttpRequest/#the-setrequestheader-method。
标签: jquery ajax http post cookies