java后台调用接口及处理跨域问题怎么解决
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍"java后台调用接口及处理跨域问题怎么解决",在日常操作中,相信很多人在java后台调用接口及处理跨域问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2025年11月08日java后台调用接口及处理跨域问题怎么解决
这篇文章主要介绍"java后台调用接口及处理跨域问题怎么解决",在日常操作中,相信很多人在java后台调用接口及处理跨域问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"java后台调用接口及处理跨域问题怎么解决"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
java调用接口及处理跨域
在做系统的时候,有些时候系统A的js代码需要调用系统B的接口,这就会产生跨域现象,可以通过后台调用处理跨域
问题,这就有点 "代理" 的意思了。
在这记录一个通用的方法
public String httpPost(String urlStr,Mapparams){ URL connect; StringBuffer data = new StringBuffer(); try { connect = new URL(urlStr); HttpURLConnection connection = (HttpURLConnection)connect.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); connection.setDoInput(true); connection.setUseCaches(false);//post不能使用缓存 connection.setInstanceFollowRedirects(true); connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); OutputStreamWriter paramout = new OutputStreamWriter( connection.getOutputStream(),"UTF-8"); String paramsStr = ""; //拼接Post 请求的参数 for(String param : params.keySet()){ paramsStr += "&" + param + "=" + params.get(param); } if(!paramsStr.isEmpty()){ paramsStr = paramsStr.substring(1); } paramout.write(paramsStr); paramout.flush(); BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream(), "UTF-8")); String line; while ((line = reader.readLine()) != null) { data.append(line); } paramout.close(); reader.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return data.toString();}
调用外部接口引起的跨域问题
背景:在我们系统上,从外部引用了一个建议系统,在建议系统当用户被给予评论或回复之后,我的消息中显示未读消息数。
实现的效果:在建议系统中当未读消息数大于0时,我们的系统引入建议系统的位置上会出现提示有未读消息的红点。
在建议系统的后台,我们写了一个countBlog的接口,用来获取未读消息数量(json格式)
在我们的系统的前台,引入接口通过返回的未读消息数量来控制红点显示
运行后报跨域问题的bug:
解决问题
方法一:注解@CrossOrigin
方法二:addCorsMappings配置
@Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS") .allowCredentials(true) .maxAge(3600) .allowedHeaders("*"); }弊端:使用此方法配置之后再使用自定义拦截器时跨域相关配置就会失效。
原因是请求经过的先后顺序问题,当请求到来时会先进入拦截器中,而不是进入Mapping映射中,所以返回的头信息中并没有配置的跨域信息。浏览器就会报跨域异常。
方法三:使用CorsFilter过滤器
private CorsConfiguration corsConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); * 请求常用的三种配置,*代表允许所有,当时你也可以自定义属性(比如header只能带什么,只能是post方式等等) */ corsConfiguration.addAllowedOrigin("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); corsConfiguration.setAllowCredentials(true); corsConfiguration.setMaxAge(3600L); return corsConfiguration;}@Beanpublic CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", corsConfig()); return new CorsFilter(source);}到此,关于"java后台调用接口及处理跨域问题怎么解决"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
系统
问题
接口
处理
消息
后台
建议
方法
配置
学习
信息
数量
时候
更多
UTF-8
拦截器
红点
帮助
接下来
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络技术需要具备什么条件
甘肃通用网络技术有限公司
二维码网络安全作品
我国坚持网络安全与信息化方针
sql2005数据库部署
导入数据库的1万条记录
网络安全 活动总结
苹果电脑无法找到服务器ip地址
网络安全法 自查
护苗网络安全知识第一季
网络安全与管理用英语怎么说
网络安全管理专项检查总结
京东分销软件开发厂商
网络安全的etf代码
360网络安全股价分析
顺义区咨询软件开发包括什么
mfc ftp服务器
河南科技大学互联网考试
梦幻西游中国服务器
软件开发的毛利率
沙溪软件开发
南航软件开发工资
lt男靠软件开发月入万元
湖南公安厅网络安全局
服务器域名无法解析
2021服务器cpu排行
吉林鸿燚互联网科技有限公司
大兴区品牌软件开发售后保障
数据库视图有如下说法
市场主体信用数据库