带cookie的跨域2

带cookie的跨域2



1、Access-Control-Allow-Origin:具体URL


(1)Access-Control-Allow-Origin设置具体的URL,只能解决设置的具体URL跨域问题,不解决带Cookie的所有URL跨域请求

设置具体跨域URL

CrossFilter代码:

@Override

    public void doFilter(ServletRequestservletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {

        HttpServletResponse res =(HttpServletResponse) servletResponse;

        HttpServletRequest req =(HttpServletRequest) servletRequest;

        String origin =req.getHeader("Origin");

        //带cookie请求,origin必须全匹配

//       res.addHeader("Access-Control-Allow-Origin",origin);

       res.addHeader("Access-Control-Allow-Origin","http://localhost:8082");

//       res.addHeader("Access-Control-Allow-Methods","GET");

        // *号表示支持所有的域名(除了带cookie请求外)

//       res.addHeader("Access-Control-Allow-Origin","*");

        // *号表示支持所有的请求方法

       res.addHeader("Access-Control-Allow-Methods","*");

       res.addHeader("Access-Control-Allow-Headers","Content-Type");

        //设置OPTIONS预检命令缓存

       res.addHeader("Access-Control-Max-Age", "60000");

        //允许带cookie请求跨域

        res.addHeader("Access-Control-Allow-Credentials","true");


        filterChain.doFilter(servletRequest,servletResponse);

    }

(2)只有http://localhost:8082访问才能跨域,如果是http://127.0.0.1:8082访问,就不满足跨域

http://localhost:8082访问能跨域


http://127.0.0.1:8082访问不能跨域


2、修改后台代码,获取请求Header中Origin


设置所有URL都能跨域

CrossFilter代码:

   @Override

   public void doFilter(ServletRequest servletRequest, ServletResponseservletResponse, FilterChain filterChain) throws IOException, ServletException{

       HttpServletResponse res = (HttpServletResponse) servletResponse;

       HttpServletRequest req = (HttpServletRequest) servletRequest;

       Stringorigin = req.getHeader("Origin");

       //带cookie请求,origin必须全匹配

       res.addHeader("Access-Control-Allow-Origin",origin);

//       res.addHeader("Access-Control-Allow-Origin","http://localhost:8082");

//       res.addHeader("Access-Control-Allow-Methods","GET");

       // *号表示支持所有的域名(除了带cookie请求外)

//       res.addHeader("Access-Control-Allow-Origin","*");

       // *号表示支持所有的请求方法

       res.addHeader("Access-Control-Allow-Methods","*");

        res.addHeader("Access-Control-Allow-Headers","Content-Type");

       //设置OPTIONS预检命令缓存

       res.addHeader("Access-Control-Max-Age", "60000");

       //允许带cookie请求跨域

       res.addHeader("Access-Control-Allow-Credentials","true");


       filterChain.doFilter(servletRequest, servletResponse);

}

http://localhost:8082访问能跨域,http://127.0.0.1:8082访问也能跨域

http://localhost:8082访问能跨域


http://127.0.0.1:8082访问能跨域
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 带cookie的跨域1 1、Access-Control-Allow-Origin:*解决不了带Cookie的跨域...
    喬喬养的泷大胖阅读 484评论 0 0
  • AJAX跨域产生的原因? 1、浏览器限制 2、XHR(XMLHttpRequest)请求 3、跨域(域名不同、端口...
    BraveHeartLi阅读 4,570评论 0 0
  • 随着软件开发分工趋于精细,前后端开发分离成为趋势,前端同事负责前端页面的展示及页面逻辑处理,服务端同事负责业务逻辑...
    lueyoo阅读 383评论 0 0
  • 大背景:前后端分离后,项目分开部署,域名不一致,ajax请求时需要解决跨域问题。 服务端支持跨域方案: 1、spr...
    songwl阅读 1,453评论 1 2

友情链接更多精彩内容