当前位置: 首页 > 知识库问答 >
问题:

vue.js - vue 3.0 +axios 跨域情况下无法携带cookie?

何睿范
2024-09-18

vue 3.0 +axios 跨域情况下无法携带cookie

cooKie 是本地写入缓存的

axios已设置withCredentials=true;

axios.defaults.withCredentials = true

后端也加了

access-control-allow-credentials: true
access-control-allow-origin: http://localhost:8080

发起请求时 查看请求头还是没有set-cookie

共有1个答案

黄高爽
2024-09-18

在 Vue 3.0 使用 Axios 跨域请求时,若希望携带 Cookie,你已经正确地设置了 axios.defaults.withCredentials = true,并且后端也正确配置了 Access-Control-Allow-Credentials: trueAccess-Control-Allow-Origin。然而,你提到请求头中没有 Set-Cookie,这通常不是由 withCredentials 引起的,因为 withCredentials 主要控制的是请求是否携带 Cookie 和认证信息,而不是响应头中是否包含 Set-Cookie

几个可能的原因和解决方案:

  1. 后端是否真的发送了 Set-Cookie

    • 首先确认后端在响应中确实发送了 Set-Cookie 头部。可以在浏览器的开发者工具中查看响应头(Network 标签页),查看响应是否包含 Set-Cookie
  2. 同源策略与CORS配置

    • 确保 Access-Control-Allow-Origin 的值严格匹配请求的源(包括协议、域名和端口)。如果源稍有不同(如协议从 http 变为 https),浏览器将不会接受响应中的 Cookie。
    • Access-Control-Allow-Origin 不能设置为通配符(如 *),当使用 withCredentials 时,必须明确指定一个域名。
  3. Cookie的Secure和HttpOnly属性

    • 如果你的请求是 HTTPS,而 Cookie 被设置为 Secure(仅通过 HTTPS 发送),确保你的前端和后端都在 HTTPS 下运行。
    • 如果 Cookie 被设置为 HttpOnly,它仍然会被发送到服务器,但无法通过 JavaScript 访问。这不会影响 Set-Cookie 的发送,但会影响你通过 JavaScript 查看 Cookie 的能力。
  4. 前端代码检查

    • 确保在发起请求时没有其他代码(如拦截器)修改或删除了 Cookie。
    • 使用 Axios 发起请求时,除了设置 withCredentials,其他配置应正确无误。
  5. 浏览器缓存和Cookie设置

    • 清除浏览器缓存和 Cookie,重新测试。
    • 检查浏览器的隐私和安全设置,确保它们没有阻止 Cookie 的使用。
  6. 查看控制台和网络错误

    • 查看浏览器的控制台(Console)和网络(Network)标签页,查找任何可能的错误或警告信息。

如果以上都确认无误,但问题依旧存在,可能需要进一步检查网络配置或考虑是否有其他未知因素影响了 Cookie 的发送和接收。

 类似资料:
  • Vue中用axios.get('http://localhost:8080/article/list')访问本机的springboot项目,报跨域错误。 在controller类中注解了CrossOrign,没用 重写了WebMvcConfigurer的addCorsMappings也没用。 在vite.config.js写server代理也没用

  • 免责声明 - 我在stackoverflow上看了很多类似的问题。 我有一个后端正在运行”https://api.website.com“和一个运行在上的前端”https://admin.website.com“后端的CORS策略设置如下: 在对“https://api.website.com”执行GET请求后,前端成功接收为域“api.website.com”设置的XSRF-TOKEN cook

  • 本文向大家介绍vue2.0 axios跨域并渲染的问题解决方法,包括了vue2.0 axios跨域并渲染的问题解决方法的使用技巧和注意事项,需要的朋友参考一下 (用的脚手架vue-cli) 第一步: 在main.js中如下声明使用 那么在其他vue组件中就可以this.$axios调用使用 第二步:在webpack配置一下proxyTable(config之下的index.js) 第三步: 试一下

  • 本文向大家介绍vue-cli 3.x 配置Axios(proxyTable)跨域代理方法,包括了vue-cli 3.x 配置Axios(proxyTable)跨域代理方法的使用技巧和注意事项,需要的朋友参考一下 vue-cli 3.x 的beta版本,基于iview做的公司的角色权限管理平台。 3.x 版本对整个项目的构建都有很大的改动,没有原先的config文件夹,没有dev.env.js和pr

  • 主要内容:GET 方法,GET 实例,GET 实例,传递参数说明,POST 方法,POST 实例,传递参数说明,执行多个并发请求,实例,axios API,实例Vue.js 2.0 版本推荐使用 axios 来完成 ajax 请求。 Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中。 Github开源地址: https://github.com/axios/axios 安装方法 使用 cdn: 或 使用 npm: 使用 bower: 使用 yarn:

  • 问题内容: $(document).ready(function(){$ .ajax({url:“ http://gdata.youtube.com/feeds/api/users/zdf/playlists?v=2 ”,键入:“ GET”,成功:function(msg){console.log(msg);}});}); 我收到此错误“ XMLHttpRequest无法加载http://gdat