其他分享
首页 > 其他分享> > Fetch API 获取 response cookie、模拟登录获取 cookie

Fetch API 获取 response cookie、模拟登录获取 cookie

作者:互联网

在尝试 Fetch API 模拟登录时,碰到一个很纳闷的事。就是明明浏览器的 Response Headers 中可以看到 set-cookie 字段。但却无法获取。
  0   尽管我最终运行环境是在 Nodejs 下使用 node-fetch 运行的。但为了调试方便,我还是习惯先在浏览器控制台中使用 fetch 调试一下。

这就是最大的坑!

浏览器的 Fetch API 由于安全策略,是无法获取 Response Headers 的 set-cookie 字段的。 https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_response_header_name  

但是,在 Nodejs 环境下使用 node-fetch 是可以正常获取的。

var fetch = require('node-fetch')

fetch("https://ikuuu.co/auth/login", {
    "headers": {
      "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
      "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
    },
    "body": "email=521573740%40qq.com&passwd=123456&code=&remember_me=on",
    "method": "POST",
    "mode": "cors",
    "credentials": 'include'
  }).then(res => {
    console.log(res.headers.get('set-cookie'))
  })

 

如果我想在浏览器的 Fetch API 中获取 cookie 怎么做?

其实既然是在浏览器中使用调试。那直接调用 document.cookie 获取即可。尽管这样做毫无意义。
fetch("https://ikuuu.co/auth/login", {
  "headers": {
    "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
  },
  "body": "email=521573740%40qq.com&passwd=123456&code=&remember_me=on",
  "method": "POST",
  "mode": "cors",
  "credentials": "include"
}).then(res => {
  console.log(document.cookie)
})

 

 

 

标签:浏览器,fetch,获取,537.36,API,cookie,response
来源: https://www.cnblogs.com/CyLee/p/16170228.html