带cookie的跨域1

带cookie的跨域1



1、Access-Control-Allow-Origin:*解决不了带Cookie的跨域问题

    在响应头中设置此字段不能满足所有解决跨域问题的场景

    比如:带cookie的跨域请求

2、前端请求代码

index.html代码

    
                     //测试getCookie方法

                     it("测试getCookie方法", function(done) {

                            //服务器返回的结果

                            varresult;


                            $.ajax({

                                   type:"get",

                                   url:base +"/getCookie",

                                   xhrFields:{

                                       withCredentials:true

                                   },

                                   success:function(json){

                                          result= json;

                                   }

                            });


                            //由于是异步请求,需要使用setTimeout来校验

                            setTimeout(function(){

                                   expect(result).toEqual({

                                          "data": "getCookie"

                                   });


                                   //校验完成,通知jasmine框架

                                   done();

                            },100);

                     });

3、cookie后端服务代码

AjaxController.java代码

   @GetMapping("/getCookie")

   @ResponseBody

   public ResultBean getCookie(@CookieValue(value="cookie")String cookie){

       System.out.println("AjaxController.getCookie()");

       ResultBean resultBean = new ResultBean(cookie);

       return resultBean;

}

CrossFilter.java代码

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

       HttpServletResponse res = (HttpServletResponse) servletResponse;

       //带cookie请求,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);

}

4、验证跨域请求

Status:400表示请求参数有问题


在cookie信息里面添加字段“cookie”


回车:表示cookie字段设置成功


然后重新访问成功
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • AJAX跨域产生的原因? 1、浏览器限制 2、XHR(XMLHttpRequest)请求 3、跨域(域名不同、端口...
    BraveHeartLi阅读 4,503评论 0 0
  • 随着软件开发分工趋于精细,前后端开发分离成为趋势,前端同事负责前端页面的展示及页面逻辑处理,服务端同事负责业务逻辑...
    lueyoo阅读 352评论 0 0
  • 关于 springmvc 3.x 版本对ajax跨域请求访问 ajax 请求后,浏览器出现跨域的问题那么在当前环境...
    山水风情阅读 514评论 0 0
  • http协议 Resource,URL,Request,Response,Headers http 请求的是资源R...
    Sharise_Mo佩珊阅读 703评论 0 4
  • 什么是跨域? 概念:指从一个域名的网页向另一个网页去请求资源,只要协议、域名、端口有任何一个不同,都被当作是跨域。...
    饥人谷_zhangfan阅读 981评论 0 1