Ajax 请求登录接口无法获取 cookies
来源:7-3 登录页面的开发(2)
想个昵称真难
2019-01-14
老师你好,我通过执行老师提供的课程代码,在执行登录的时候,头部中是包含了 Cookies 信息的。但是我将课程代码 Ajax 请求部分的代码提取出来,单独放在一个 html 文件当中模拟登录请求,能请求成功,但是 Headers 中却没有包含 Cookies 的信息,在浏览器中也没有保存到 Cookies,请问一下这是什么原因?
执行环境:Chrome 版本 71.0.3578.98(正式版本) (64 位)
服务器环境:使用 http-sever 作为静态服务器
下面是我将 Ajax 代码提取到 html 文件中模拟登录请求的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<title>Document</title>
</head>
<body>
<h1>Hello, world!</h1>
</body>
<script>
function request(param) {
return new Promise((resolve, reject) => {
$.ajax({
type: param.type || 'get',
url: param.url || '',
dataType: param.dataType || 'json',
data: param.data || null,
success: res => {
// 数据请求成功
if (0 === res.status) {
typeof resolve === 'function' && resolve(res.data, res.msg);
}
// 没有登录状态,强制登录
else if (10 === res.status) {
this.doLogin();
}
else {
typeof reject === 'function' && reject(res.msg || res.data);
}
},
error: err => {
typeof reject === 'function' && reject(err.statusText);
}
});
});
}
request({
data: {
username: 'admin',
password: 'admin',
},
type: 'post',
url: 'http://admintest.happymmall.com/manage/user/login.do',
})
</script>
</html>
以下是请求的 Header 信息:

以下是请求 Response 信息:

以下是请求后的 cookies 信息:

写回答
1回答
-
cookie必须在域名一致的情况下才能种到浏览器里,你用单独的html去请求应该是不行的
012019-01-17
相似问题