解决springboot跨域问题No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

编程知识 更新时间:2023-04-06 10:54:47

文章目录

  • 1.问题描述
  • 2.问题产生
  • 3.解决方案
    • 1. 在WebMvcConfig添加(推荐使用)
    • 2.直接采用SpringBoot的注解@CrossOrigin
      • 1.Controller层在需要跨域的类或者方法上加上该注解即可。
      • 2.spring注解@CrossOrigin不起作用的原因

1.问题描述

前端向后台发送请求发现报错:
报错: Access to XMLHttpRequest at ‘http://localhost:8082/doLogin’ from origin ‘http://localhost:8080’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

2.问题产生

跨域访问(CORS)
CORS是一种访问机制,英文全称是Cross-Origin Resource Sharing,即我们常说的跨域资源共享,通过在服务器端设置响应头,把发起跨域的原始域名添加到Access-Control-Allow-Origin 即可。

当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时,一个资源会发起一个跨域HTTP请求(Cross-site HTTP
request)。
一般都是异步请求会有这个问题,比如:Ajax,XMLHttpRequest等

3.解决方案

1. 在WebMvcConfig添加(推荐使用)

@Override
public void addCorsMappings(CorsRegistry registry) {

    //允许跨域访问资源定义
    registry.addMapping("/**")
            //(只允许本地的指定端口访问)允许所有
            .allowedOrigins("http://localhost:8080")
            // 允许发送凭证: 前端如果配置改属性为true之后,则必须同步配置
            .allowCredentials(true)
            // 允许所有方法
            .allowedMethods("*")

            .allowedHeaders("*");
}

2.直接采用SpringBoot的注解@CrossOrigin

1.Controller层在需要跨域的类或者方法上加上该注解即可。

其中@CrossOrigin中的2个参数:

  • origins: 允许可访问的域列表
  • maxAge:准备响应前的缓存持续的最大时间(以秒为单位)
@CrossOrigin(origins = "http://domain2", maxAge = 3600)
Controller层在需要跨域的类或者方法上加上该注解即可。

2.spring注解@CrossOrigin不起作用的原因

1、是springMVC的版本要在4.2或以上版本才支持@CrossOrigin
2、非@CrossOrigin没有解决跨域请求问题,而是不正确的请求导致无法得到预期的响应,导致浏览器端提示跨域问题。
3、在Controller注解上方添加@CrossOrigin注解后,仍然出现跨域问题,解决方案之一就是:
在@RequestMapping注解中没有指定Get、Post方式,具体指定后,问题解决。

更多推荐

解决springboot跨域问题No ‘Access-Control-Allow-Origin’ header is present on the reques

本文发布于:2023-04-06 10:54:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/3d6ff22500a7556bc8a243f889587986.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Control   Origin   springboot   Access   requested

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 49166文章数
  • 14阅读数
  • 0评论数