我使用jquery的ajax方法将POST命令发送到另一台服务器。我在我的firefox中设置了CorsE插件,我可以发送POST命令,并且它成功返回。但是,我尝试使用用户和密码登录,并且一切正常,除了我使用ajax方法发送的cookie值不是浏览器设置使用的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发送相同的值。
答案 0 :(得分:1)
它将始终发送document.cookies
中的Cookie。如果要覆盖它们,请更改该变量,而不是尝试使用自定义标头。如果您希望它仅用于那一个调用,请保存旧值,分配所需的新cookie,发送AJAX请求,然后恢复旧值。