cookie的发送问题
在A页面点击超链接跳转到B页面的时候,通过使用js创建一个cookie,希望浏览器在发送请求时能够带上被创建的cookie
A.js
$('table tr td').click(
function()
{
document.cookie = "testName=你好 tom;Path=/";
window.location.href = "/B.html" ;
}
);
B.js
$(function(){
if(document.cookie.length > 0){
let start = document.cookie.indexOf("testName=");
if(start != -1){
start = start + "testName".length + 1;
let end = document.cookie.indexOf(";", start);
if(end == -1)
end = document.cookie.length;
alert(unescape(document.cookie.substring(start, end)));
}
}
}
结果是B.js可以获取到 testName 的值,但是在后端遍历request中的 cookies 数组时,却没有 testName。浏览器在发送请求的时候不是会附带上 cookie 吗?望大佬能传道授业解惑,解答一下浏览器发送 cookie 的过程。
回答
个人见解:
- cookie有作用域的概念。a.myhost.com 与 b.myhost.com 不一定可用通用。这取决于 cookie的
Domain。 - 如果是在跨域且ajax请求的情况下。
服务端是否允许携带cookie(Access-Control-Allow-Credentials: true)。
前段ajax请求设置为携带cookie(withCredentials:true)。不同的ajax库有不同的设置方式。 - cookie 的
Secure策略,只有使用https才会起作用。