SpringBoot 优雅配置跨域多种方式及Spring Security跨域访问配置的坑

本文详细介绍了在SpringBoot项目中处理跨域问题的常见方式,包括JSONP和CORS。重点讨论了SpringBoot中@CrossOrigin注解、拦截器以及Filter过滤器的使用方法,并指出在Spring Security环境下配置CORS的必要性,帮助开发者解决实际项目中的跨域难题。
摘要由CSDN通过智能技术生成

前言

最近在做项目的时候,基于前后端分离的权限管理系统,后台使用 Spring Security 作为权限控制管理, 然后在前端接口访问时候涉及到跨域,但我怎么配置跨域也没有生效,这里有一个坑,在使用Spring Security时候单独配置,SpringBoot 跨越还不行,还需要配置Security 跨域才行。

什么是跨域

跨域是一种浏览器同源安全策略,即浏览器单方面限制脚本的跨域访问

在 HTML 中,<a>, <form>, <img>, <script>, <iframe>, <link> 等标签以及 Ajax 都可以指向一个资源地址,而所谓的跨域请求就是指:当前发起请求的域与该请求指向的资源所在的域不一样。这里的域指的是这样的一个概念:我们认为若协议 + 域名 + 端口号均相同,那么就是同域

当前页面URL和请求的URL首部(端口之前部分)不同则会造成跨域。通俗点讲就是两个URL地址,端口之前部分,只要有一点不同即发生跨域。

例如:

1. 在http://a.baidu.com下访问https://a.baidu.com资源会形成协议跨域。

2. 在a.baidu.com下访问b.baidu.com资源会形成主机跨域。

3. 在a.baidu.com:80下访问a.baidu.com:8080资源会形成端口跨域。

解决跨域的常见方式

JSONP

由于浏览器允许一些带有src属性的标签跨域,常见的有iframe、script、img等,所以JSONP利用script标签可以实习跨域

前端通过script标签请求,并在callback中指定返回的包装实体名称为jsonp(可以自定义)

<script src="http://aaa.com/getusers?callback=jsonp"></script>

后端将返回结果包装成所需数据格式

jsonp({
    "error":200,
    "message":"请求成功",
    "data":[{
        "username":"张三",
        "age":20
    }]
})

总结:JSONP实现起来很简单,但是只支持GET请求跨域,存在较大的局限性

CORS

CORS是一个W3C标准,全称是”跨域资源共享”(Cross-origin resource sharing),允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

规范中有一组新增的H

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值