Day57跨域问题**

跨域问题

  • (1)什么是跨域
    当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域
  • (2)为什么会出现跨域
    出于浏览器的同源策略限制
    同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能
    同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。
    http://localhost:8001
    http://localhost:8002
    所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)

在这里插入图片描述

跨域问题解决办法

  • (1)直接采用SpringBoot的注解@CrossOrigin
    Controller层在需要跨域的类或者方法上加上该注解即可
  • (2)采用过滤器的方式

@CrossOrigin

@CrossOrigin //本类所有的方法都支持跨域请求,浏览器不会拦截跨域的请求

public class UserController

Filter

 <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
@Component
@Slf4j
public class SimpleCORSFilter implements Filter {

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "PUT,POST, GET, OPTIONS, DELETE, HEAD");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "access-control-allow-origin, authority, content-type, version-info, X-Requested-With");
        chain.doFilter(req, res);
        log.info("filter");
    }

    public void init(FilterConfig filterConfig) {
    }

    public void destroy() {
    }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翁老师的教学团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值