zoukankan      html  css  js  c++  java
  • 记一次Api请求,无法写入cookie(vue-cli3坑位)

    说说前端小伙伴遇到的问题

    后台小伙伴指定了POST请求,请求头'Content-Type': 'application/json'

    通过Allow-Control-Allow-Origin拓展解决跨域(这里的跨域方式会导致浏览器无法携带cookie),通过jquery设置'Content-Type': 'application/json',

    相应面板显示200,成功,但是返回数据为 application/json no support 等。

    在swagger上模拟请求,数据是正确的

    后面发现是后台返回的格式为字符串导致。

    在没找出问题之前,担心是跨域问题,就借用了另一个cli3搭建的项目,通过axios去请求,通过proxy解决跨域

    发现axios({method: 'post'})或axios.post都会被转为GET请求(代理又不是jsonp),并返回一个请求链接的字符串。

    查看chrome网络请求为GET并且request headers里没有发现'Content-Type,

    于是重新设置headers: {'Content-Type': 'application/json' },请求变为POST,请求成功。

    登录接口成功,但是请求别的接口的时候被重定向到登录超时接口

    发现登录请求的接口,显示200,但是没有cookie写入,所以会重定向到别的接口

    查看响应头是有cookie写入的

    Set-Cookie:
    rememberMe=deleteMe; Path=/tb-customer-web_war; Max-Age=0; Expires=Thu, 21-Mar-2019 10:06:39 GMT
    后查资料发现是path路径匹配出错,导致cookie找不到路径,无法写入,所以需要重写cookie路径

    配置vue.config.js proxy

    '/': {
                    target: 'http://x.x.x.x:10021/tb-customer-web_war/',//真实请求地址
                    ws: true,
                    changOrigin: true,
                    pathRewrite: function(path, req) { //重写路径,
                        return path.replace('/', '');/
                    },
                    cookiePathRewrite: {//重写cookie路径
                        '/tb-customer-web_war': '/'
                    }
                },

    完美解决

    set-cookie:
    JSESSIONID=ffdd8535-043a-4afd-916a-50d6ad88a935; Path=/; HttpOnly
  • 相关阅读:
    N 个小程序开发视频免费下载
    10 本 Android PDF 书籍免费分享
    10 本 Java PDF 书籍免费分享
    10本 Linux PDF 书籍免费分享
    10本 JavaScript PDF 书籍免费分享
    Android.mk
    BatteryService
    ActivityManagerService
    PackageManagerService
    Android Dalvik
  • 原文地址:https://www.cnblogs.com/92xcd/p/10219103.html
Copyright © 2011-2022 走看看