vue get/post请求如何携带cookie的问题

一:

只需要在main.js中写这三行代码即可

import axios from ‘axios‘

axios.defaults.withCredentials=true;//让ajax携带cookie

Vue.prototype.$axios = axios;

如果cookie携带不过去的话,请求响应的时候他会报错显示登陆过期的呦!!!

顺便说一下原生js携带cookie的方法:

xhrFields: {
               withCredentials: true
            },

加一段上述代码即可
来源:https://blog.csdn.net/liuxin_1991/article/details/81531321

当我们使用vue请求的时候,我们会发现请求头中没有携带cookie传给后台,我们可以在请求时添加如下代码:
vue.http.options.xhr = { withCredentials: true}; 的作用就是允许跨域请求携带cookie做身份认证的;
vue.http.options.emulateJSON = true; 的作用是如果web服务器无法处理 application/json的请求,我们可以启用 emulateJSON 选项;
启用该选项后请求会以 application/x-www-form-urlencoded 作为MIME type, 和普通的html表单一样。 加上如下代码,get请求返回的代码会
携带cookie,但是post不会;

为了方便,我们这边是封装了一个get请求,只要在get请求添加参数 { credentials: true } 即可使用;

const ajaxGet = (url, fn) => {
  let results = null;
  Vue.http.get(url, { credentials: true }).then((response) => {
    if (response.ok) {
      results = response.body;
      fn(1, results);
    } else {
      fn(0, results);
    }
  }, (error) => {
    if (error) {
      fn(0, results);
    }
  });
};

如上只会对get请求携带cookie,但是post请求还是没有效果的,因此在post请求中,我们需要添加如下代码:

Vue.http.interceptors.push((request, next) => {
  request.credentials = true;
  next();
});

Vue.http.interceptors 是拦截器,作用是可以在请求前和发送请求后做一些处理,加上上面的代码post请求就可以解决携带cookie的问题了;
因此我们的post请求也封装了一下,在代码中会添加如上解决post请求携带cookie的问题了;如下代码:

const ajaxPost = (url, params, options, fn) => {
  let results = null;

  if (typeof options === ‘function‘ && arguments.length <= 3) {
    fn = options;
    options = {};
  }
  Vue.http.interceptors.push((request, next) => {
    request.credentials = true;
    next();
  });
  Vue.http.post(url, params, options).then((response) => {
    if (response.ok) {
      results = response.body;
      fn(1, results);
    } else {
      fn(0, results);
    }
  }, (error) => {
    if (error) {
      fn(0, results);
    }
  })
};

来源:https://www.cnblogs.com/tugenhua0707/p/8923177.html

原文地址:https://www.cnblogs.com/huchong-bk/p/12122934.html

时间: 2024-11-17 02:54:31

vue get/post请求如何携带cookie的问题的相关文章

使用vue时,发送请求不带cookie

第一次使用VUE进行开发,在获取图片验证码与服务器进行比对时,提示验证码错误,最后发现请求时未携带cookie,导致SESSIONID改变致使校验失败. 解决办法 Vue.http.options.emulateJSON = true;Vue.http.options.xhr = { withCredentials: true } //在拦截其中添加此属性即可Vue.http.interceptors.push((request, next) => {request.credentials =

ajax跨域请求无法携带cookie的问题

客户端设置 1.原生js设置方式: `xhr.withCredentials = true;` 2.jQuery或者zepto设置方式: $.ajax({ ... xhrFields: { withCredentials: true }, ... }) 默认情况下,跨源请求不提供凭据(cookie.HTTP认证及客户端SSL证明等).通过将withCredentials属性设置为true,可以指定某个请求应该发送凭据.这样就可以就行跨域cookie共享了,比如你的二级域名要获取你一级域名的coo

vue resource 携带cookie请求 vue cookie 跨域(六)

1.依赖VueResource  确保已安装vue-resource到项目中,找到当前项目,命令行输入: npm install vue-resource --save 在主方法添加 过滤 Vue.http.interceptors.push(function(request, next) {//拦截器 // 跨域携带cookie request.credentials = true; next() }) 以下是针对每个请求都会携带cookie ,也可以指定接口请求携带cookie this.$

vue resource 携带cookie请求 vue cookie 跨域

vue resource 携带cookie请求 vue cookie 跨域 1.依赖VueResource 确保已安装vue-resource到项目中,找到当前项目,命令行输入: npm install vue-resource --save 在主方法添加 过滤 Vue.http.interceptors.push(function(request, next) {//拦截器 // 跨域携带cookie request.credentials = true; next() }) 以下是针对每个请

iOS-WKWebView携带cookie发送http请求,cookie失效

发送请求代码: NSString *testUrl = @"http://10.22.122.7:8081/test2_action/view_index"; NSURL *url = [NSURL URLWithString:testUrl]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy tim

轻松把玩HttpClient之封装HttpClient工具类(五),携带Cookie的请求

最近更新了一下HttpClientUtil工具类代码,主要是添加了一个参数HttpContext,这个是用来干嘛的呢?其实是用来保存和传递Cookie所需要的.因为我们有很多时候都需要登录,然后才能请求一些想要的数据.而在这以前使用HttpClientUtil工具类,还不能办到.现在更新了以后,终于可以了. 先说一下思路:本次的demo,就是获取csdn中的c币,要想获取c币,必须先登录.而每次登录需要5个参数.其中2个必不可少的参数是用户名和密码,其他的3个参数,是需要从登录页面获取的.在第一

前端Jquery-Ajax跨域请求,并携带cookie

目录 1. 需现在服务端允许跨域,允许携带cookie 2. 前端Ajax跨域请求代码 1. 需现在服务端允许跨域,允许携带cookie 因服务端脚本语言不同,自行搜索设置 2. 前端Ajax跨域请求代码 $.ajax({ type: "POST", url: "http://127.0.0.1:8000/api/login", data: JSON.stringify({'num': 1}), dataType: 'json', xhrFields: { with

ajax请求携带 cookie

之前都有这样一个理解:ajax请求时是不会自动带上cookie的,要是想让他带上的话,必须哟啊设置withCredential为true.这个说法会让人产生完全扭曲的误解,我就是其中之一.完整的无歧义的表述应该是这样:1.ajax会自动带上同源的cookie,不会带上不同源的cookie2. 可以通过前端设置withCredentials为true, 后端设置Header的方式让ajax自动带上不同源的cookie,但是这个属性对同源请求没有任何影响.会被自动忽略.3. 这是MDN对withCr

vue interceptors 设置请求头

在main.js添加过滤器,可以 Vue.http.interceptors.push((request,next)=>{ //request.credentials = true; // 接口每次请求会跨域携带cookie //request.method= 'POST'; // 请求方式(get,post) //request.headers.set('token','111') // 请求headers携带参数 next(function(response){ return respons