转:ajax携带cookie的两种方式

https://www.cnblogs.com/lgl1209/p/11527080.html

  1. Ajax携带cookie的两种方式

  场景:

  后台需要前端的ajax请求携带上cookie值,因为cookie上面有用户的userId的加密信息或者是token。

  
  解决步骤:
  1、服务器方面,添加@CrossOrigin注解到controller层上。-----》解决服务端允许前端跨域问题。
  2、前端方面:必须要注意的点是:浏览器的同源策略问题----》就是域名必须要一致,否则,ajax是不会携带非同源的cookie的。-----》怎样解决这个同源的问题呢?-----》如果前端同事懂的话,可以用node.js去配置代理---》如果是后台同事懂的话,可以用nginx去配置反向代理------》目的是:让域名保持一致!!!!!

  ajax请求
  a. 第一种
  $.ajax({
    url: 'www.baidu.com',
    type: 'post',
    data: '',
    // 默认情况下,标准的跨域请求是不会发送cookie的
    xhrFields: {
      withCredentials: true
    },
    success: (rs) {
    }
  })

  b. 第二种 / 因为有时候第一种情况cookie也是携带不过去的,可以通过fiddle 4抓包看
  $.ajax({
    url: 'www.baidu.com',
    type: 'post',
    data: '',
    // 默认情况下,标准的跨域请求是不会发送cookie的
    beforeSend: function (xhr) {
      xhr.withCredentials = true
    },
    success: (rs) {
    }
  })

原文地址:https://www.cnblogs.com/wbyixx/p/12932200.html