java后端解决跨域的方法,前端请求接口跨域

  java后端解决跨域的方法,前端请求接口跨域

  

目录

java调用接口及处理跨域在这记录一个通用的方法调用外部接口引起的跨域问题解决问题

 

  

java调用接口及处理跨域

在做系统的时候,有些时候系统A的射流研究…代码需要调用系统B的接口,这就会产生跨域现象,可以通过后台调用处理跨域

 

  问题,这就有点"代理"的意思了。

  

在这记录一个通用的方法

公共字符串httpPost(String urlStr,MapString,String params){ URL connect;字符串缓冲区数据=新字符串缓冲区();尝试{ connect=新URL(urlStr);HttpURLConnection连接=(HttpURLConnection)连接。打开连接();联系。setrequestmethod( POST );联系。setdoooutput(true);联系。setdoinput(true);联系。setuse caches(false);//发布不能使用缓存联系。setinstanceforredirections(true);联系。setrequestproperty( accept , */* );联系。setrequestproperty( connection , Keep-Alive );connection.setRequestProperty(用户代理, Mozilla/4.0(兼容;MSIE 6.0 windows NT 5.1 sv1));output streamwriter paramout=新的输出streamwriter(连接。获取输出流(), UTF-8 );string params str=//拼接邮政请求的参数for(字符串参数:参数。keyset()){ params str= param = params。get(param);}如果(!帕拉姆斯海峡。isempty()){ params str=params str。子串(1);} param out。write(paramsStr);参数输出。flush();缓冲读取器reader=新缓冲读取器(新输入流读取器(连接。getinputstream(), UTF-8 );弦线;while ((line=reader.readLine())!=null){ data。追加(行);} paramout。close();读者。close();} catch(异常e) { //TODO自动生成的捕捉块e . printstacktrace();}返回数据。tostring();}

 

  

调用外部接口引起的跨域问题

背景:在我们系统上,从外部引用了一个建议系统,在建议系统当用户被给予评论或回复之后,我的消息中显示未读消息数。

 

  实现的效果:在建议系统中当未读消息数大于0时,我们的系统引入建议系统的位置上会出现提示有未读消息的红点。

  在建议系统的后台,我们写了一个countBlog博客博客的接口,用来获取未读消息数量(json格式)

  在我们的系统的前台,引入接口通过返回的未读消息数量来控制红点显示

  运行后报跨域问题的bug:

  

解决问题

方法一:注解@CrossOrigin

 

  方法二:addCorsMappings配置

  @ Override public void addCorsMappings(CORS注册表注册表){ registry。添加映射(/* * ).allowed origins(“*”)。allowed methods(“GET”,“HEAD”,“POST”,“PUT”,“DELETE”,“OPTIONS”).allowCredentials(true).maxAge(3600).允许的标头(" * ");}弊端:使用此方法配置之后再使用自定义拦截器时跨域相关配置就会失效。

  原因是请求经过的先后顺序问题,当请求到来时会先进入拦截器中,而不是进入绘图映射中,所以返回的头信息中并没有配置的跨域信息。浏览器就会报跨域异常。

  方法三:使用CorsFilter过滤器

  private corscorpins configuration(){ corscorpins configuration=new corscorpins configuration();*朱塞佩朱塞佩朱塞佩,*云娥,朱庇特朱庇特朱庇特(阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金标题-标头哎哎哎哎哎哎,哎哎哎员额配置表凯末尔阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉)*/corscon配置。addallowed原点(*);corscoconf。addallowed头(*);corscoconf。addallowed方法(*);性能。setllowcredentins(true);颜色配置。setmaxage(3600 l);返回科尔斯孔配置;} @ beanpblic cor filter filter(){ urlbasedcorconfiguration source=new urlbasedcorconfiguration source();来源。注册scoconf(/*, CORS configue());返回新科尔斯过滤器(来源);}云娥与云娥同在,吴惠玲?吴惠玲,吴亚玲吴亚玲吴亚玲是吗?

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: