java怎么拦截某个对象
271
2022-09-25
jQuery-跨域问题的处理
调用登录接口时,后端一般会在调用登录接口成功后,在response中设置cookie,之后前端的每次请求都会自动地在请求头上加上后端设置好的cookie,这对前端来说是透明的。
当登录接口与登录后调用的接口域名不同时,会出现跨域问题。处理跨域问题的方式如下:
前端部分:
1
或是直接在请求中加上crossDomain:true和xhrFields
1 $.ajax({ 2 type: 'POST', 3 url: base + "/farmer/farmeruser/login", 4 data: pack(data), 5 contentType: 'application/json', 6 xhrFields: { 7 withCredentials: true 8 }, 9 crossDomain: true,10 success: function (data) {11 12 },13 error: function () {14 15 }16 })
后端部分(Java):
1 private boolean recharge(HttpServletRequest request, HttpServletResponse response) throws Exception { 2 String url = request.getHeader("Origin"); 3 logger.debug("Access-Control-Allow-Origin:" + url); 4 if (!StringUtils.isEmpty(url)) { 5 String val = response.getHeader("Access-Control-Allow-Origin"); 6 if (StringUtils.isEmpty(val)) { 7 response.addHeader("Access-Control-Allow-Origin", url); 8 response.addHeader("Access-Control-Allow-Credentials", "true"); 9 }10 }11 return true;12 }
首先获取Allow-Origin的值,然后判断是否为空,若为空,则给resoponse加上Allow-Orgin的值,即为请求处的url,同时设置Allow-Credentials(允许证件)的值为true即可。
这样设置cookie便可以成功,之后的请求都会自动加上cookie。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~