Spring API 的 CORS 测试 提示错误 Reason: header ‘authorization’ is not allowed
在使用 CORS 测试的时候,我们得到下面的错误提示:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8080/search/user. (Reason: header ‘authorization’ is not allowed according to header ‘Access-Control-Allow-Headers’ from CORS preflight response).
问题解决
如果你使用的是 Spring 进行 API 编写的话。
出现这个问题的原因在于你返回的 http 请求的 header Authorization 这个选项。
在你的过滤器中,你应该添加下面的一段内容:
httpServletResponse.setHeader("Access-Control-Allow-Headers", "Authorization, Origin, X-Requested-With, Content-Type, Accept");
需要注意的是,根据官方的文档中的说明 Access-Control-Allow-Headers: * 是可以使用通配符的。
但是 Authorization 的头不能使用通配符,必须单独列出。
因此,需要在 Spring API 返回的头中添加上面的代码。
上面的代码表示告诉前端 CORS 的设置,以避免出现跨域访问的问题。
上面的配置,你可以在 Spring 的过滤器中进行配置。
当你配置成功后重启服务器,在进行跨域测试。
你会看到测试成功的提示:
同时在浏览器的网络调试部分,我们应该能够看到相应的头中也添加了 Authorization。
跨域访问比较难调试的问题就是不同的地方有不同的错误,需要根据前端和后端同时来进行调试。但,浏览器的调试窗口也给了比较完整的提示。
按照浏览器的调试提示来调试就可以了。
https://www.ossez.com/t/spring-api-cors-reason-header-authorization-is-not-allowed/639
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)