CORS跨域请求:前后端分离

  • 请求过滤器:
    /**
    *  OncePerRequestFilter保证在任何Servlet容器中都是一个请求只执行一次的过滤器。
    */
    public class CorsFilter extends OncePerRequestFilter {
    
    @Override
    protected void doFilterInternal(HttpServletRequest req, HttpServletResponse resp, FilterChain chain) throws ServletException, IOException {
    
        Properties props = PropertiesLoaderUtils.loadAllProperties("cors.properties");
        //允许的 客户端域名
        resp.addHeader("Access-Control-Allow-Origin", props.getProperty("cors.allowed-origins"));
        //允许的 方法名
        resp.addHeader("Access-Control-Allow-Methods", props.getProperty("cors.allowed-methods"));
        //允许服务端访问的客户端请求头,多个请求头用逗号分割,例如:Content-Type
        resp.addHeader("Access-Control-Allow-Headers", "Content-Type,X-Requested-With,token");
        //预检验请求时间
        resp.addHeader("Access-Control-Max-Age", props.getProperty("cors.max-age"));//30 min
        resp.addHeader("Access-Control-Allow-Credentials", "true");
    
        chain.doFilter(req, resp);
    }
    }

  • web.xml中配置跨域过滤器:
    <!--配置跨域请求的过滤器-->
    <filter>
    <filter-name>cors</filter-name>
    <filter-class>com.jd.dashboard.cors.CrossFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>cors</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

  • 过滤器中的属性配置如下:
  • #跨域请求CORS全局配置属性值
    
    #允许访问的客户端域名,例如:http://web.xxx.com
    cors.allowed-origins=http://front.xx.com
    
    #允许访问的方法名
    cors.allowed-methods=POST, GET, OPTIONS, DELETE
    
    #允许服务端访问的客户端请求头,多个请求头用逗号分割,例如:Content-Type
    cors.allowed-headers=Content-Type
    
    #允许客户端访问的服务端响应头
    cors.exposed-headers=
    
    #是否允许请求带有验证信息,若要获取客户端域下的cookie时,需要将其设置为true
    cors.allow-credentials=true
    
    cors.max-age=1800
    

    由于jsonp只支持GET方式的请求,所以这种方式比较推荐。

    原文地址:http://blog.51cto.com/coffee/2091741

    时间: 2024-11-05 13:28:59

    CORS跨域请求:前后端分离的相关文章

    跨域与前后端分离

    百度关于跨域的文章几乎每个文章都会有这么一个图和这几个解决方案 只要是跟当前页面所在url不同的请求都属于跨域请求,为什么我可以访问cdn或者引入其他网站的js或者css或者图片,那是因为src这个标签是支持跨域的,你用ajax去获取外网的js,css,图片试试,所以==把页面放在跟请求一个地址的服务器里面,就是最强的解决跨域的方案== 从jq-ajax文章过来的可以回去了,下面的内容超纲了 vue-cli是启动了一个开发版的本地服务器,域名是localhost:端口,在脚手架里写请求自然不可能

    CORS跨域请求总结

    CORS跨域请求分为简单请求和复杂请求. 1. 简单请求: 满足一下两个条件的请求. (1) 请求方法是以下三种方法之一: HEAD GET POST (2)HTTP的头信息不超出以下几种字段: Accept Accept-Language Content-Language Last-Event-ID Content-Type:只限于三个值application/x-www-form-urlencoded.multipart/form-data.text/plain 2. 复杂请求: 非简单请求

    CORS跨域请求规则以及在Spring中的实现

    CORS: 通常情况下浏览器禁止AJAX从外部获取资源,因此就衍生了CORS这一标准体系,来实现跨域请求. CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing).它允许浏览器向跨源(协议 + 域名 + 端口)服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制. 跨域请求在java spring MVC中的实现: Spring MVC HandlerMapping 接口对CORS提供了一个内部支持,

    Java实现CORS跨域请求

    问题 使用前后端分离模式开发项目时,往往会遇到这样一个问题 -- 无法跨域获取服务端数据 这是由于浏览器的同源策略导致的,目的是为了安全.在前后端分离开发模式备受青睐的今天,前端和后台项目往往会在不同的环境下进行开发,这时就会出现跨域请求数据的需求,目前的解决方案主要有以下几种: JSONP.iframe.代理模式.CORS等等 前面几种方式在这里不讲,网上有很多资料.在这里我主要分享一下CORS这种解决方式,CORS即"跨域资源共享",它允许浏览器向跨源服务器,发出XMLHttpRe

    跨域请求,关于后端session会话丢失的解决办法

    目前使用前后端分离的模式开发,后端提供跨域接口.前端jsonp调用,绑定数据,但是在该站点下有个人中心模块存在的情况下,服务端的session会话会被跨域请求覆盖改掉 大家都知道tomcat使用cookie中jsessionid来区分客户端session会话 跨域请求接口恰恰有时候响应回来回改变该站点下的jsessionid值,导致服务器每次判断都是一个新的会话 以网站个人中心模块来说,每一个跨域jsonp请求,都会Response 一个cookie值,SET-COOKIE:JSESSIONID

    SpringBoot配置Cors跨域请求

    一.同源策略简介 同源策略[same origin policy]是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源. 同源策略是浏览器安全的基石. 什么是源 源[origin]就是协议.域名和端口号.例如:http://www.baidu.com:80这个URL. 什么是同源 若地址里面的协议.域名和端口号均相同则属于同源. 是否是同源的判断 例如判断下面的URL是否与 http://www.a.com/test/index.html 同源 http://www

    CORS——跨域请求那些事儿

    在日常的项目开发时会不可避免的需要进行跨域操作,而在实际进行跨域请求时,经常会遇到类似 No 'Access-Control-Allow-Origin' header is present on the requested resource.这样的报错.这样的错误,一般是由于CORS跨域验证机制设置不正确导致的,本文将详细讲解CORS跨域验证机制的原理,让您轻松掌握CORS跨域设置的使用方法,安全.方便的进行前端开发. 什么是CORS CORS(Cross-Origin Resource Sha

    CORS 跨域请求

    一.简介 CORS需要浏览器和服务器同时支持.目前,所有浏览器都支持该功能,IE浏览器不能低于IE10. 整个CORS通信过程,都是浏览器自动完成,不需要用户参与.对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样.浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉. 因此,实现CORS通信的关键是服务器.只要服务器实现了CORS接口,就可以跨源通信. 二.两种请求 浏览器将CORS请求分成两类:简单请求(simple

    cors跨域请求问题 关于spring -springmvc -mybatis .基于xml配置方式

    1:场景还原 今天要写一个方法, 需求是  在购物车服务上,  调用一个个人中心的方法 ,用到了 跨域请求. 我就在个人中心的 上面写了个方法, 并在springMVC.xml中,配置了 配合完成以后 写了一个ajax 测试接口.却总是出现跨域失败 未完待续...... 原文地址:https://www.cnblogs.com/sansy/p/9926537.html