跨域请求

当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。

出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非使用CORS头文件。

问题背景

如果前端提示”Access-Control-Allow-Origin”问题

XMLHttpRequest cannot load http://xxxxxxxxxx/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

跨域过滤器

那么需要再SpringBoot2配置跨域过滤器允许跨域访问。

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Component;@Component
public class CorsFilter implements Filter {  @Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {  HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) res;  response.setHeader("Access-Control-Allow-Origin", "*");  response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT, GET");  response.setHeader("Access-Control-Max-Age", "3600");  response.setHeader("Access-Control-Allow-Headers", "x-requested-with");  chain.doFilter(req, res);  }  @Overridepublic void init(FilterConfig filterConfig) {}  @Overridepublic void destroy() {}
}  

跨域功能改进

如果需要显示跨域地址,还可以在里面加上访问来源打印语句,供排查

String curOrigin = request.getHeader("Origin");
System.out.println("###跨域过滤器->当前访问来源->"+curOrigin+"###");  

如果需要跨域权限,可以判断一下来源

String curOrigin = request.getHeader("Origin");
System.out.println("###跨域过滤器->当前访问来源->"+curOrigin+"###");
if(curOrigin.indexOf("127.0.0.1:8080")>-1){response.setHeader("Access-Control-Allow-Origin", "*");
}

关于跨域访问更专业的内容,可以访问Mozilla官方的一个关于CROS文章
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

SpringBoot之跨域过滤器配置允许跨域访问相关推荐

  1. python flask跨域_Flask配置Cors跨域的实现

    1 跨域的理解 跨域是指:浏览器A从服务器B获取的静态资源,包括Html.Css.Js,然后在Js中通过Ajax访问C服务器的静态资源或请求.即:浏览器A从B服务器拿的资源,资源中想访问服务器C的资源 ...

  2. 怎么实现跨域?配置vue跨域proxy,jsonp跨域很简单

    如果不设置跨域  需要跨域的接口是 https://sug.so.360.cn/suggest?word=a word 是参数 怎么设置跨域 1.vue的跨域第一步在 vue 的根目录创建一个  vu ...

  3. cors跨域+php配置,CORS跨域详解

    废话少数,直接上代码!!!!!!!!!! html:html> Document var url = "http://japi.juhe.cn/tv/getCategory?key=1 ...

  4. 解决Axios跨域问题(Axios跨域问题解决方案)

    问题背景 Axios是不允许跨域访问的,别说跨域,跨端口都不行.例如某项目我本地vue前端frontEnd为localhost:8889,Java后台 backEnd为localhost:8888 报 ...

  5. 随笔-springBoot配置全局跨域

    随笔-springBoot配置全局跨域 本文参考链接: 前端看视频学习vue使用axios进行Ajax请求,视频中使用nodemon创建的node-server,弄了半天一直说跨域.为了不浪费时间直接 ...

  6. Web API 实现JSONP或者安装配置Cors跨域

    前言 照理来说本节也应该讲Web API原理,目前已经探讨完了比较底层的Web API消息处理管道以及Web Host寄宿管道,接下来应该要触及控制器.Action方法,以及过滤器.模型绑定等等,想想 ...

  7. cors跨域_Nginx通过CORS配置实现跨域访问

    什么是跨域 跨域是指跨域名的访问,以下情况都属于跨域: 跨域原因说明 示例 域名不同 www.jd.com 与 www.taobao.com 域名相同,端口不同 www.jd.com:8080 与 w ...

  8. 跨域失败 过滤器_Spring Boot 跨域过滤器(过滤器跨域问题)

    重写WebMvcConfigurer#addCorsMappings()可以解决一部分跨域的问题,但是对于有些过滤器涉及到跨域,且拦截器位面较高的话,还是会出现一些跨域问题. 配置 CorsFilte ...

  9. filter导致跨域失效_Quarkus中过滤器filter和跨域cors问题(4)

    前言 Quarkus中的web模块是基于java标准web规范jax-rs构建的,实现则选用了jboss的resteasy.这部分只是请求路由转发部分实现.真正的请求接收则使用了eclipse开源的v ...

最新文章

  1. samba+quota配置
  2. H5直播系列四 RTMP HTTP-FLV HLS MPEG-DASH
  3. javascript window.confirm确认 取消对话框实现代码小结
  4. 在 Visual Studio 2019 中为 .NET Core WinForm App 启用窗体设计器
  5. 4.1 卷积神经网络调参-adagrad_adam
  6. 透过NpetShop 看Web项目开发中的分工合作
  7. css 字体倾斜_css笔记3(文本,列表,背景声明)
  8. python colour-science 绘制CIE 1976色度图
  9. sqlserver2005 安装图解教程以及SQL 2005 SP3补丁安装图文教程
  10. Orcad Schematic常用功能
  11. 【绝知此事要躬行】线性表之链表OJ(上)
  12. MATLAB指纹识别技术[完美运行,详细解释,GUI界面,万字文稿]
  13. MySQL 报OperationalError: (1130, “XX‘ is not allowed to connect to this MySQL server“)的正确解决方法
  14. (二) CGAL库应用:轮廓中轴骨架生成create_interior_straight_skeleton_2()及轮廓的偏置create_offset_polygons_2()
  15. 数码类评测:南卡第二代pencil电容触控笔
  16. 小学生心算CAI系统
  17. Linux下命令行使用技巧
  18. 如何写英文科技论文 papers
  19. 【实验3 循环结构】7-14 循环结构 —— 中国古代著名算题。趣味题目:物不知其数。
  20. 热电阻 热电偶 测量电路_热电偶温度传感器与热电阻温度传感器之间应该如何选择?...

热门文章

  1. ios kvo 要引入_iOS:KVO
  2. 关于sizeof函数、memcpy函数以及结构体关于指针的问题汇总
  3. 现在什么行业最赚钱?2021最赚钱的行业大全
  4. 每天定时给你的女朋友发送睡前小故事其二
  5. 【GPLT】L1-027 出租
  6. 欧拉回路 和 哈密顿回路
  7. AKS集群蓝绿部署实现版本升级(上篇)
  8. TorchNet ConfusionMeter 解析
  9. 【AGC】崩溃服务之常见问题
  10. 外食孕妈咪的营养计划