axios+vue 请求时如何携带cookie

axios+vue 请求时如何携带cookie
1,当符合同源策略时,可以直接设置 document.cookie = " 你要设置的内容 "

mounted() {
    document.cookie = "ioiopipoadiasdasdbasdbas";   // 非跨域传递cookie 直接设置cookie即可
    this.getData();   //请求的方法
   
  },
  methods: {
    async getData() {
       let data = await axios.get('/data.json', {
         params: {
           id: 1,
         },
  
       }
    },
  },

在这里插入图片描述
此时:可以直接向服务端传递cookie,无需设置。
2,当出现跨域请求的时候
默认情况下:跨域请求不会携带cookie,所以 要添加 withCredentials: true 配置
注意:这种情况下稍微复杂,但是对于前端而言,只需要写上 withCredentials: true 该配置即可
当然在此之前还有 document.cookie = “ioiopipoadiasdasdbasdbas”; 这行代码,你需要设置一个cookie,才可以传给服务端。

 document.cookie = “ioiopipoadiasdasdbasdbas”
 let data2 = await this.$axios.get("http://localhost:9000/select", {
        withCredentials: true,   //设置跨域的时候传递cookie,需要服务端的配合   
      });
      console.log(data2, "data2");

此时:一定需要后端的配合,不然浏览器会爆出一些错误,导致请求失败。
后端代码以node.js为例:
在响应头中添加以下几个字段

res.header('Access-Control-Allow-Credentials', 'true') //当客户端跨域并需要传递cookie时,需要设置Access-Control-Allow-Credentials,并且值为“true”  代表是否向页面暴露cookie
    // 指定允许的跨域请求字段。
res.header(
        'Access-Control-Allow-Headers',
        'token,Content-Type,Content-Length, Authorization, Accept,X-Requested-With,domain,zdy' //当客户端跨域并需要传递cookie时,需要设置Access-Control-Allow-Headers,并且值为不能为“*”,需要具体配置  代表允许上传的请求头字段
    )
    // 指定允许的跨域请求的来源。填写星号(*)表示全部域名;您也可以填写完整域名,例如http://www.aliyun.com。
res.header('Access-Control-Allow-Origin', 'http://localhost:8082') //当客户端跨域并需要传递cookie时,需要设置Access-Control-Allow-Origin,并且值为不能为“*”,需要具体配置
    // 指定允许的跨域请求方法。可同时设置多个方法,多个方法用英文逗号(,)分隔。
res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')

也就是说,不管后端是什么语言,需要返回以上四个响应头字段,如下所示,跨域状态下,cookie已经传递成功
在这里插入图片描述

值得强调的是:Access-Control-Allow-Origin、Access-Control-Allow-Headers 两个字段一定不要设置为 “*” , 否则也会失败。 此时,请设置具体配置, 这是一个坑,查阅资料得知,部分浏览器对 * 的兼容性不好,有的说法解释说 Access-Control-Allow-Credentials’:‘true’ 该字段会影响 * 的解析,导致报错。

以上就是我对 axios携带 cookie的一些尝试。 如有不妥,请指出,希望对各位有所帮助,共勉!!!

  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 为了在Vue中使用axios发送请求,并在请求头中添加Cookie,可以按照以下步骤操作: 1. 首先,需要在Vue项目中安装axios。使用以下命令安装axios: ``` npm install axios ``` 2. 在Vue项目的入口文件(一般是main.js)中,引入axios,并将其挂载到Vue实例上: ```javascript import axios from 'axios'; Vue.prototype.$http = axios; ``` 3. 在发送请求的组件中,可以使用`this.$http`来调用axios发送请求。在发送请求,可以通过设置请求头来添加Cookie。例如,可以使用axios的`defaults`属性来设置全局的请求头,如下所示: ```javascript this.$http.defaults.headers.common['Cookie'] = 'your_cookie_value'; ``` 4. 在具体的请求中,可以使用axios的`get`、`post`等方法发送请求。例如,发送一个GET请求并带有Cookie: ```javascript this.$http.get('/api/your_url').then(response => { // 处理响应 }).catch(error => { // 错误处理 }); ``` 以上就是在Vue中使用axios发送请求,并在请求头中添加Cookie的方法。通过设置请求头,可以在服务器端获取到Cookie并进行相应的处理。 ### 回答2: 在Vue中使用Axios发送请求,在请求头上添加cookie可以通过在Axios配置中设置headers属性的方式来实现。 首先,在Vue项目中安装并引入Axios库,并创建一个Axios的实例: ``` import axios from 'axios' const instance = axios.create() ``` 然后,在发送请求前,通过Axios的拦截器设置请求头: ``` instance.interceptors.request.use((config) => { // 在请求头中添加cookie config.headers.Cookie = 'your cookie value' return config }) ``` 在上述代码中,通过`config.headers.Cookie`属性来设置请求头的cookie值,将'your cookie value'替换为你实际需要携带cookie值。 最后,在需要发送请求的地方使用这个实例进行请求: ``` instance.get('your request url') .then(response => { console.log(response.data) }) .catch(error => { console.log(error) }) ``` 在这个例子中,使用Axios的`get`方法发送一个GET请求,并在成功或失败打印出相应的结果。 这样,当发送请求Axios会在请求头中添加我们设置的cookie,完成请求的发送。 ### 回答3: 在Vue中使用axios发送请求并在请求头上添加cookie,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了axiosvue-cookie插件。你可以通过以下命令来安装它们: ``` npm install axios npm install vue-cookie ``` 2. 在你的Vue项目中,你需要在main.js文件中导入和配置axiosvue-cookie。打开main.js文件,并添加以下代码: ```javascript import axios from 'axios'; import Vue from 'vue'; import VueCookie from 'vue-cookie'; Vue.use(VueCookie); axios.defaults.withCredentials = true; // 配置axios请求拦截器,添加请求axios.interceptors.request.use(config => { const token = VueCookie.get('your_cookie_name'); if (token) { config.headers.Cookie = `your_cookie_name=${token}`; } return config; }); Vue.prototype.$axios = axios; ``` 3. 在需要发送请求的组件中,你可以使用以下代码: ```javascript this.$axios.get('your_url') .then(response => { // 处理响应数据 }) .catch(error => { // 处理请求错误 }); ``` 请注意,以上代码默认使用了名为"your_cookie_name"的cookie,你需要将其替换为你自己的cookie名称。同,请确保你的服务器在响应中包含了相应的Access-Control-Allow-Origin头信息,以允许跨域请求和带cookie请求。 通过以上步骤,你就可以在Vue中使用axios发送请求,并在请求头上添加cookie了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值