【web前端】withCredentials有什么作用

1.withCredentials是什么?

credential

withCredentials是XMLHttpRequest的一个属性,表示跨域请求是否提供凭据信息(cookie、HTTP认证及客户端SSL证明等)

实际中用途就是跨域请求是要不要携带cookie

2.在需要跨域携带cookie时,要把withCredentials设置为true,比如

var xhr = new XMLHttpRequest()
xhr.withCredentials = true
xhr.open('GET', 'http://localhost:8888/', true)
xhr.send(null)

3.服务端的设置

只有客户端设置当然不够了,服务端还需要设置两点

1)跨域

既然是跨域请求,服务端要设置Access-Control-Allow-Origin,告诉浏览器允许跨域,而且这个值必须指定域名,不能设置为*
比如你页面所在的域名为http://www.abc.com,服务端的Access-Control-Allow-Origin,必须是http://www.abc.com

2)Access-Control-Allow-Credentials

在响应头中,Access-Control-Allow-Credentials这个值也要设置为true,根据mdn上的说法,只有设置为true的时候,浏览器才会把响应结果暴露给你的js代码

最后看一下服务端的代码,我简单用koa2写了一个

const koa = require('koa2')

const app = new koa()

app.use(async ctx => {
  ctx.set('Access-Control-Allow-Origin', 'http://127.0.0.1:5500')  // 此处为html页面的地址
  ctx.set('Access-Control-Allow-Credentials', true)
  const username = ctx.cookies.get('username')
  if (username) {
    ctx.body = username
  } else {
    ctx.body = 'no cookie'
  }
})

app.listen(8888)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    他方l阅读 1,077评论 0 2
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    Yaoxue9阅读 1,325评论 0 6
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    HeroXin阅读 856评论 0 4
  • 欢迎关注微信公众号:全栈工厂 本文主要参考跨域资源共享 CORS 详解[http://www.ruanyifeng...
    liqingbiubiu阅读 1,897评论 0 3
  • 前端开发中,跨域使我们经常遇到的一个问题,也是面试中经常被问到的一些问题,所以,这里,我们做个总结。小小问题,不足...
    Nealyang阅读 481评论 0 0