【Vue-Spring跨域Bug已解决】has been blocked by CORS policy: The value of the······

news2025/1/16 18:44:50

文章目录

  • 一.问题发现
  • 二.问题解决过程
    • 2.1 询问AI结果
    • 2.2 问题解决
  • 三.知识点

一.问题发现

报错内容:

p://localhost:8001/user/login’ from origin ‘http://localhost:3001’ has been blocked by CORS policy: The value of the ‘Access-Control-Allow-Credentials’ header in the response is ‘’ which must be ‘true’ when the request’s credentials mode is ‘include’. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.

前后端分离项目:

前端:Vue3-Element-Admin

后端:SpringCloud

后端接口已写好,用postman检测正常。

在这里插入图片描述

但是在搭建好前端项目后,进行数据传输时报错:

image-20230412192355658

二.问题解决过程

一开始怀疑为前端策略问题。检查后也更改了后端接口的域名并且是放行的所有的请求。

proxy: {
'/api': {
target: '*', 
changeOrigin: true,
rewrite: path => path.replace(/^\/api/, ''),
},
},

还是报错如下:

image-20230412192604376

2.1 询问AI结果

这个报错提示是因为在跨域请求中,请求头中设置了 withCredentials 参数为 true,表示跨域请求需要使用凭证(如 cookies、HTTP 认证等)。而在响应头中,Access-Control-Allow-Origin 的值不能是通配符 *,必须是具体的域名。

你可以尝试在后端服务器的响应头中设置 Access-Control-Allow-Origin 的值为前端应用的域名,比如:

Access-Control-Allow-Origin: http://localhost:3001

这样就可以解决这个报错问题了。

另外,如果你在发送跨域请求时需要携带 cookies 或其他凭证,还需要在请求头中设置 withCredentials 参数为 true。比如:

const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.open('GET', 'http://example.com/api');
xhr.send();

或者使用 Fetch 发送请求时设置 credentials 参数为 ‘include’。比如:

fetch('http://example.com/api', {
  credentials: 'include'
});

但是这个回答并不能解决我的问题。

2.2 问题解决

后端Spring写了@CrossOrigin,依旧无法解决问题。

我发现前端的请求头中设置了 withCredentials 参数为 true。

后端也需要配置相应的

@CrossOrigin(origins = "http://localhost:3001", allowCredentials = "true")

这里的允许域名可以写为允许全部。

@CrossOrigin(origins = “*”, allowCredentials = “true”)

如此再次请求,问题就已解决。

image-20230412194101417

三.知识点

使用 @CrossOrigin 注解可以完成后端服务器的响应头中设置 Access-Control-Allow-Credentials 的值为 true。在 Spring Boot 中,使用 @CrossOrigin 注解可以很方便地实现跨域支持,同时支持设置是否允许使用凭证。

例如,在 Spring Boot 中使用 @CrossOrigin 注解可以实现以下方式:

@RestController
@CrossOrigin(origins = "http://localhost:3001", allowCredentials = "true")
public class MyController {
    @GetMapping("/my-api")
    public String myApi() {
        return "Hello World";
    }
}

在上述代码中,我们在 MyController 类上添加了 @CrossOrigin 注解,设置 origins 为前端应用的域名,同时将 allowCredentials 设置为 true,表示允许使用凭证。

需要注意的是,使用 @CrossOrigin 注解只适用于单个控制器或方法的跨域支持。如果需要全局配置跨域支持,应该使用上一条回答中提到的方式,在配置类中设置 CorsConfigurationSource

allowCredentials 是 CORS 中的一个选项,用于指示是否允许在跨域请求中发送和接收凭据。凭据可以是例如 Cookies、HTTP 认证信息(如使用 Basic、Digest 或 NTLM 方式进行身份验证)或 TLS 客户端证书等敏感信息。

如果将 allowCredentials 设置为 true,则客户端请求中包含的凭据将被发送到服务器,并且服务器响应中的 Access-Control-Allow-Credentials 头部将被设置为 true。这样,就可以在跨域请求中携带和接收敏感信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/415573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我决定给 ChatGPT 做个缓存层 Hello GPTCache

🌟 写在前面黄老板的一句【AI 的 iPhone 时刻已至】震撼了半个科技圈。或许,应该把这句话再扩展一下:AI 的 iPhone 时刻早已势不可挡,它不是平静随和地跟大家 say hi,而是作为一个强悍的巨人携着一把名为 ChatGPT 的斧…

leetcode每日一题:数组专练篇第二期(2/2)

😚一个不甘平凡的普通人,日更算法学习和打卡,期待您的关注和认可,陪您一起学习打卡!!!😘😘😘 🤗专栏:每日算法学习 💬个人…

【LeetCode: 剑指 Offer II 089. 房屋偷盗(打家窃舍) | 暴力递归=>记忆化搜索=>动态规划】

🍎作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🍎座右…

Adept AI,颠覆“产品学“的产品

1.三体降临,产品学不存在了? 兄弟们,你们敢想象以后我们都会有用自己的贾维斯吗?我们不需要在安装一大堆APP,不需要适应各种APP交互,只需一句话你能快速达到你想要的目的吗?你能想象那种科幻大…

Nacos 客户端服务注册源码分析-篇二

Nacos 客户端服务注册源码分析-篇二 继续接上回,上回分析到 NacosNamingService 的整个注册的流程,其实是通过 NacosFactory.createNamingService 方法,反射获取 NacosNamingService 接口的实现类 NacosNamingService ,而 NacosN…

基于粒子群算法的含风光燃储微网优化调度

说明书 MATLAB代码:基于粒子群算法的含风光燃储微网优化调度 关键词:微网优化调度 粒子群算法 风光燃储 参考文档:《基于多目标粒子群算法的微电网优化调度_王金全》仅参考部分模型,非完全复现 优势:代码注释详实&…

【通过Cpython3.9源码看看python中的大小整数】

小整数 /* interpreter state */#define _PY_NSMALLPOSINTS 257 #define _PY_NSMALLNEGINTS 5这是CPython中定义的两个常量,它们用于控制解释器状态中的小整数对象池。在CPython中,小整数对象池是一种优化机制,用于减少…

轨迹相似度整理

1 基于点之间的距离 1.1 欧几里得距离 优点:线性计算时间缺点:轨迹长度必须一样 1.2 DTW DTW 笔记: Dynamic Time Warping 动态时间规整 (&DTW的python实现) 【DDTW,WDTW】_UQI-LIUWJ的博客-CSDN博客 …

Golang流媒体实战之六:lal拉流服务源码阅读

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《Golang流媒体实战》系列的链接 体验开源项目lal回源转推和录制lalserver的启动源码阅读Golang流媒体实战之五:lal推流服务源码阅读Golang流媒体…

大数据3 -Hadoop HDFS-分布式文件系统

目录 1.为什么需要分布式存储? 2. HDFS的基础架构 3. HDFS存储原理 4. NameNode是如何管理Block块的 5. HDFS数据的读写流程 1.为什么需要分布式存储? •数据量太大,单机存储能力有上限,需要靠数量来解决问题•数量的提升带…

【区块链】走进web3的世界-合约交互中的异常/边界处理

在以太坊智能合约中,异常处理是一个非常重要的问题,因为任何一个函数调用都有可能导致异常。常见的异常包括函数调用失败、无效参数、内部错误等。 在 Solidity 中,可以使用 require、assert 和 revert 等关键字来处理异常。这些关键字可以用…

第一章 序言:Pytorch在自然语言处理中的应用

01 序言:Pytorch在自然语言处理中的应用 目录01 序言:Pytorch在自然语言处理中的应用1. PyTorch简介2. 自然语言处理3. PyTorch在自然语言处理中的应用3.1 文本分类3.2 情感分析3.3 机器翻译4. 结论1. PyTorch简介 首先,我们需要介绍一下PyT…

WINDOWS消息

WINDOWS消息 Unit01消息队列 01消息队列概念 消息队列是用于存放消息的队列消息在队列中先进先出所有窗口程序都有消息队列程序(GetMessage)可以从队列中获消息 02消息队列分类 系统消息队列:由系统维护的消息队列(这个队列非…

Qt的内存管理机制

QObject的parent设置为null 1.如果构造时直接指定了null,当前实例不会有父对象存在,Qt也不能自动析构该实例,除非实例超出作用域导致析构函数被调用,使用deletelater()函数,不建议使用delete 2.如果指定了parent&#…

关于电商商品数据API接口列表,你想知道的(详情页、Sku信息、商品描述、评论问答列表)

目录 一、商品数据API接口列表 二、商品详情数据API调用代码item_get 三、获取sku详细信息item_sku 四、获得淘宝商品评论item_review 五、数据说明文档 进入 一、商品数据API接口列表 二、商品详情数据API调用代码item_get <?php// 请求示例 url 默认请求参数已经URL…

数据结构-插入排序

一.概要 插入排序是一种基于比较的排序算法&#xff0c;其基本思想是将待排序的元素插入到已排序的序列中&#xff0c;形成新的有序序列。 插入排序算法的过程如下&#xff1a; 将待排序序列分为两部分&#xff1a;已排序部分和未排序部分&#xff1b; 初始时&#xff0c;已…

C++string类的详细使用方法

String类的详细使用 文章目录String类的详细使用初始化扩容空间resize与reserve扩容长度获取插入与删除函数运算符插入append插入assign字符串截取push_back尾插erase删除replase替换swap交换pop_back尾删substr截断字符串功能copy拷贝find查找rfind反向查找find_first_of匹配查…

三路快排(基于三指针单趟排序的快速排序)+快排时间复杂度再分析

目录 一.前言 二. 三路快排 &#x1f60d;算法思想: &#x1f60d;算法实现步骤: &#x1f60d;三指针单趟排序的实现:​ &#x1f60d;非递归快排完全体: &#x1f914;与C标准库里的快排进行对比测试: 三.快排时间复杂度再分析 一.前言 http://t.csdn.cn/mz8dghttp://…

SolidWorks2020安装教程

破解文件及步骤 和 安装包 hf&#xff1a;SolidWorks2020 即可 &#xff08;我的推广 共中号&#xff09; Before installation, block the outgoing Internet access by means of Windows Firewall or cord plug. Check .NET Framework 3.5 and 4.0 are installed. If .NET …

Hive安装与操作

目录 环境 数据 实验步骤与结果 &#xff08;1&#xff09;环境启动 &#xff08;2&#xff09;Hive基本操作 环境 Hadoop集群开发环境、mysql、Hive环境 数据 course.txt、sc.txt、student.txt 实验步骤与结果 &#xff08;1&#xff09;环境启动 ①执行命令&#xf…