首先我们配置上host映射
前端:
index.html
<!DOCTYPE html> <html lang="zh" xmlns:th="http://www.thymeleaf.org"> <html> <head lang="en"> <meta charset="UTF-8" /> <title></title> </head> <script th:src="@{/js/jquery.min.js}"></script> <body> <h1 th:text="${port}">Hello World</h1> <button id="button-click">Button</button> <script> $(function(){ $("#button-click").click(function(){ $.ajax({ url : "http://myproject.dev.cn:8080/sayHello", //url : "/sayHello", type : "POST", beforeSend: function(request) { request.setRequestHeader("token","zzz"); }, success: function(result) { alert(result); } }) }) }) </script> </body> </html>
此时访问 localhost:8080/index 然后点击 点击button 按钮就会看到有跨域的错误信息提示
因为我们的浏览器的域名是localhsot, 而我们请求的是 myproject.dev.cn 所以存在跨域问题。
yml 增加跨域的域名信息
cors: allowedOrigin: localhost
增加跨域过滤器
import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Value; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URI; public class AllowCrossDomainFilter implements Filter { @Value("${cors.allowedOrigin}") private String allowedOrigin; @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println(" 跨域配置 > allowedOrigin : " + allowedOrigin); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) servletRequest; System.out.println("访问url为: " + req.getRequestURI()); HttpServletResponse resp = (HttpServletResponse) servletResponse; resp.setHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE"); String origin = req.getHeader("Origin"); if (StringUtils.isNotBlank(origin)) { URI uri = URI.create(origin.trim()); String host = uri.getHost(); System.out.println("origin : " + origin + " host: " + host + " > > allowedOrigin : " + allowedOrigin + " allowedOrigin.indexOf(host) : " + allowedOrigin.indexOf(host)); if (allowedOrigin.indexOf(host) >= 0) { System.out.println(req.getRequestURI() + "允许跨域访问 > allowedOrigin : " + allowedOrigin); resp.addHeader("Access-Control-Allow-Origin", origin); } resp.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS"); resp.setHeader("Access-Control-Allow-Credentials", "true"); resp.setHeader("Access-Control-Allow-Headers", "Origin,No-Cache,X-Requested-With,If-Modified-Since,Pragma,Last-Modified,Cache-Control,Expires,Content-Type,X-E4M-With,userId,token"); resp.setCharacterEncoding("utf-8"); } filterChain.doFilter(req, resp); } @Override public void destroy() { } }
增加配置信息,吧过滤器加入过滤链
import com.example.springboot.filter.AllowCrossDomainFilter; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ApplicationConfig { @Bean public FilterRegistrationBean filterOneRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(allowCrossDomainFilter()); registration.addUrlPatterns(new String[]{"/*"}); registration.setName("filterOne"); registration.setOrder(1); return registration; } @Bean public AllowCrossDomainFilter allowCrossDomainFilter() { return new AllowCrossDomainFilter(); } }
此时在访问localhost:8080/index。然后点击button按钮,就可以看到已经可能访问了
相关推荐
前端跨域访问springboot后端时添加响应头。。。。。。
在这个实现类中,我们可以覆盖`addCorsMappings`方法,为每个需要处理的跨域请求设置规则: ```java @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void ...
Springboot CORS跨域设置
springboot跨域 springboot解决跨域问题+不同版本springboot解决跨域问题
SpringBoot应用可以通过配置CORS来允许特定或所有来源的跨域请求。在SpringBoot应用中,你可以创建一个配置类,比如`CorsConfig`,并添加一个`CorsFilter`。在`buildConfig`方法中,设置`CorsConfiguration`对象,...
然而,跨域资源共享(CORS)问题常常会成为前后端整合过程中的一个难题。在本文中,我们将详细探讨如何解决Vue调用Spring Boot接口时遇到的403跨域问题。 ### CORS问题简介 跨域资源共享(CORS)是一种安全机制,...
SpringBoot提供了解决跨域问题的强大工具,开发者可以通过`@CrossOrigin`注解或自定义CORS过滤器来设定跨域策略。在确保安全性的前提下,灵活调整配置以满足前后端分离的开发需求。理解并正确配置跨域策略,是构建...
通过定义一个`CorsFilter` Bean,可以设置全局的跨域访问规则。下面是一个示例代码片段,展示如何配置全局的CORS过滤器: ```java @Configuration public class GlobalCorsConfig { @Bean public CorsFilter ...
第三种方式是在具体的方法上使用@CrossOrigin注解,这属于局部跨域设置。@CrossOrigin注解可以应用于控制器的类或方法上,允许用户细粒度地控制CORS策略。不过,文档中提到SpringBoot 2.4.x版本不再支持这种策略,这...
首先,创建一个配置类,使用 `CorsConfiguration` 对象来配置跨域设置。 ```java @Configuration public class CustomCORSConfiguration { private CorsConfiguration buildConfig() { CorsConfiguration ...
无论选择哪种方式,核心都是通过设置`Access-Control-Allow-*`响应头来告诉浏览器允许哪些跨域请求。了解这些方法后,开发者可以更好地处理Web应用中的跨域问题,确保数据能在不同源之间安全地传递。
SpringBoot 框架 RESTful 接口设置跨域允许 SpringBoot 框架 RESTful 接口设置跨域允许是为了解决浏览器的同源策略...在 SpringBoot 框架中,可以通过配置文件的方式来实现跨域设置,提高应用程序的安全性和灵活性。
SpringBoot解决跨域请求拦截问题代码实例 在微服务开发中,一个系统包含多个微服务,会存在跨域请求的场景。本文主要讲解SpringBoot解决跨域请求拦截的问题。 知识点1:同源策略 同源策略是浏览器出于网站安全性...
计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习...
SpringBoot配置允许跨域访问代码实例 SpringBoot框架通常用于前后端分离项目,因此需要配置后台允许跨域访问,以便前端页面可以正常访问后台接口。下面将详细介绍如何配置SpringBoot允许跨域访问。 跨域访问的...
同时,别忘了在AJAX请求中设置`Content-Type`为`multipart/form-data`和`xhrFields`的`withCredentials`为`true`,以处理跨域身份验证。 总结一下,这个"SpringBoot第6讲:SpringBoot+jersey跨域文件上传"教程主要...
上述代码将允许 UserController 中的所有接口的跨域访问,并且将超时时长设置为 1 小时。 三、自定义跨域过滤器 在 Springboot 项目中,也可以通过实现 Filter 接口来实现自定义的跨域过滤器。例如: ```java ...
LiuShuaiDong:springboot跨域解决方案
SpringBoot解决ajax跨域问题的方法 在Web开发中,ajax跨域问题是一个常见的问题,尤其是在使用SpringBoot框架进行开发时。跨域问题是指在不同的域名、协议或端口之间进行资源请求时所遇到的问题。在本文中,我们将...
Spring Boot解决跨域问题 在今天的文章中,我们将讨论如何使用Spring Boot解决跨域问题。跨域问题是一个常见的安全问题,它是由浏览器的同源策略造成的,即浏览器不能执行其他网站的脚本。 什么是跨域? 跨域是...