首先我们配置上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后端时添加响应头。。。。。。
解决springboot实现跨域session共享问题,防止sql注入。可以更有效的解决token问题,欢迎下载,有问题可以再评论下方留言,及时解答!!加群:687942640
Springboot CORS跨域设置
springboot跨域 springboot解决跨域问题+不同版本springboot解决跨域问题
主要介绍了解决Vue调用springboot接口403跨域问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
SpringBoot应用跨域访问解决方案.docx
springboot做前后端分离,ajax跨域请求问题 前后端分离:即将后端服务层与前端展示层分别开发和部署,因而产生两个需要打包发布的项目, 将两个分别部署后,前端再去请求后端就会产生跨域请求的问题。 两种解决方案
解决springboot前后端分离跨域问题
主要介绍了springboot vue 跨域问题的解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
SpringBoot 中实现跨域的5种方式
主要介绍了Springboot处理CORS跨域请求的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
springboot怎样实现跨域请求, springboot与mybatis结合
主要为大家详细介绍了SpringBoot框架RESTful接口设置跨域允许,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了SpringBoot解决跨域请求拦截代码实例,在微服务开发中,一个系统包含多个微服务,会存在跨域请求的场景。 本文讲解SpringBoot解决跨域请求拦截的问题。,需要的朋友可以参考下
主要介绍了Springboot 实现跨域访问 无需使用jsonp的实现代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
主要介绍了springboot跨域问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
导入eclipse,修改resources下的mybatis-generator.xml,然后run as,输入 mvn:mybatis-generator:generate,就可以了
今天小编就为大家分享一篇关于springboot后端解决跨域问题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
跨域是很多项目需要遇到的文章,本篇文章主要介绍了详解SpringBoot多跨域请求的支持(JSONP),具有一定的参考价值,有兴趣的可以了解一下
主要介绍了详解springboot设置cors跨域请求的两种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧