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 信息:

Header 信息

以下是请求 Response 信息:

response

以下是请求后的 cookies 信息:

cookies

写回答

1回答

Rosen

2019-01-17

cookie必须在域名一致的情况下才能种到浏览器里,你用单独的html去请求应该是不行的

0
1
想个昵称真难
非常感谢!
2019-01-17
共1条回复

React16+React-Router4 打造企业级电商后台管理系统

【毕设面试】让缺乏框架开发经验的你掌握框架开发

976 学习 · 405 问题

查看课程