-
2020-06-07 23:09:41
前段时间公司新开了一个项目,在和前端联调的时候,发现竟然会出现跨域问题,当时就有点懵,局域网的调用接口为什么会跨域了?最后查看我们的框架,里面没有添加跨域的配置文件,所以记录一下解决跨域的方法(PS:以前总和别人说怎么怎么简单!!!)
首先我们可以通过配置过滤器是来解决跨域@Configuration public class CorsConfiguration { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurerAdapter() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedHeaders("*") .allowedMethods("*") .allowedOrigins("*"); } }; } }
但是上面那样配置的话,就代表整个项目都允许跨域访问了,所以不想这样的,我们也可以给单个接口去配置
response.setHeader("Access-Control-Allow-Origin", "*");
当然也有一个注解是可以完美解决跨域的
@CrossOrigin 注解
最后如果项目是springcloud的话,我们可以使用 服务网关(zuul)又称路由中心,用来统一访问所有api接口,维护服务。更多相关内容 -
java调用接口(跨域调用函数)
2021-02-26 18:47:27reMap.put("outResultReason", "不调用物流验证接口"); return reMap; }else{ HashMap linkMap = (HashMap)list.get(0); url = linkMap.get("linkUrl").toString(); } */ HttpClient client = new HttpClient(); //...一个工程中的主要方法:
public Map ky(Map map){
String url = "http://localhost:8080/api/json/ky.action";
Map reMap = new HashMap();
try{
if(map.size() == 0){
reMap.put("outResult", "0");
reMap.put("outResultReason", "无数据需要发送");
return reMap;
}
map.put("typeId", "06");
ArrayList list = (ArrayList)dao.queryMapList("billVerify.getLinkUrl",map);
/*
if(list == null || list.size() == 0){
reMap.put("outResult", "1");
reMap.put("outResultReason", "不调用物流验证接口");
return reMap;
}else{
HashMap linkMap = (HashMap)list.get(0);
url = linkMap.get("linkUrl").toString();
}
*/
HttpClient client = new HttpClient();
//返回结果集
JSONObject resJson = new JSONObject();
PostMethod postMethod = new PostMethod(url);
StringPart strPart1 = new StringPart("param", URLEncoder.encode(JSONObject.fromObject(map).toString(), "utf-8"));
client.getParams().setSoTimeout(15000);
Part[] parts = { strPart1};
//对于MIME类型的请求,httpclient建议全用MulitPartRequestEntity进行包装
MultipartRequestEntity mre = new MultipartRequestEntity(parts, postMethod.getParams());
postMethod.setRequestEntity(mre);
//执行请求,返回状态码
int status = client.executeMethod(postMethod);
if (status == HttpStatus.SC_OK) {
String result = postMethod.getResponseBodyAsString();
resJson = JSONObject.fromObject(result);
if("1".equals(resJson.get("outResult"))){
reMap.put("outResult", resJson.get("outResult"));
reMap.put("outResultReason", resJson.get("outResultReason"));
}else{
reMap.put("outResult", resJson.get("outResult"));
reMap.put("outResultReason", resJson.get("outResultReason"));
}
} else {
System.out.println("接口请求失败。");
reMap.put("outResult", "0");
reMap.put("outResultReason", "请求失败。");
}
}catch(Exception e){
e.printStackTrace();
reMap.put("outResult", "0");
reMap.put("outResultReason", "请求超时。");
}
return reMap;
}
另一个工程中的主要方法:
public String ky(){
Map map = new HashMap();
try {
jsonParam = URLDecoder.decode(param ,"UTF-8");
} catch (Exception e1) {
e1.printStackTrace();
}
if(jsonParam==null){
map.put("outResult", "0");
map.put("outResultReason", "参数:param 为空!");
result = JSONObject.fromObject(map);
return SUCCESS;
}
map = jsonService.ky(jsonParam);
result = JSONObject.fromObject(map);
return SUCCESS;
}
-
解决Vue调用springboot接口403跨域问题
2020-12-11 08:20:30最近在做一个前后端分离的项目, 前端用的是Vue后端使用的是springboot, 在项目整合的时候发现前端调用后端接口报错403跨域请求问题 ...2. 上面的方法解决的是部分功能的跨域问题, 有的时候我们需要全局跨域, -
java 解决接口跨域
2021-09-24 15:16:431.引入库 代码如下(示例): import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.... import java.io.IOException;... * @Desc 解决跨域问题 */ @Component p1.引入库
代码如下(示例):
import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
2.解决跨域
代码如下(示例):
/** * @author yuqz * @date 2021年9月24日 * @Desc 解决跨域问题 */ @Component public class CorsFilter implements Filter { @Override public void init(FilterConfig filterConfig){ } @Override public void doFilter(ServletRequest request, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "Content-Type, x-requested-with, access_token,activityId"); chain.doFilter(request, response); } @Override public void destroy() { } }
-
java解决请求跨域的两种方法
2020-08-25 17:28:46主要为大家详细介绍了java解决请求跨域的两种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
java后台调用接口,处理跨域问题
2019-08-30 00:28:26前言:在做系统的时候,有些时候系统A的js代码需要调用系统B的接口,这就会产生跨域现象,可以通过后台调用处理跨域 问题,这就有点 “代理” 的意思了。 在这记录一个通用的方法。。。 public String httpPost...前言:在做系统的时候,有些时候系统A的js代码需要调用系统B的接口,这就会产生跨域现象,可以通过后台调用处理跨域
问题,这就有点 “代理” 的意思了。
在这记录一个通用的方法。。。
public String httpPost(String urlStr,Map<String,String> params){ 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(); }
-
后端接口支持跨域CORS调用
2021-02-26 18:45:02Spring MVC 从4.2版本开始增加了对CORS的支持,可以全局配置,也可以对类或方法配置;可以通过Java代码,也可以通过xml配置方式。...Java配置新建一个类,做跨域的配置@Configuration@EnableWebMvcpublic ... -
JAVA后端调用外部接口(跨域)- HttpURLConnection
2021-03-01 16:23:52前提要该外部接口封装好json返回值,然后main方法测试调用该接口即可 package com.utils; import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; ... -
接口跨域访问完全解决方案(java五种跨域解决方案)
2020-04-13 09:21:01https://blog.csdn.net/qq_41463655/article/details/89703831?tdsourcetag=s_pctim_aiomsg -
Java解决跨域问题
2021-05-03 16:06:58我们在开发过程中经常会遇到前后端分离而导致的跨域问题,导致无法获取返回结果。跨域就像分离前端和后端的一道鸿沟,君在这边,她在那边,两两不能往来. 什么是跨域(CORS) 跨域(CORS)是指不同域名之间相互访问... -
[后端] java如何解决跨域问题
2021-07-30 11:21:49本人在基于Oauth2.0做鉴权/授权时,配合前端联调接口时,已经让前端请求时的请求头带上key:Authorization,但是前台报错为跨域问题,后台报错鉴权失败,于是跟踪错误,发现在网关处从header中一直拿不到这个 ... -
SpringBoot接口解决跨域问题
2022-03-08 21:21:14跨域配置 1、什么是跨域 浏览器从一个域名的网页去请求另一个域名的资源时,域名、...@CrossOrigin //解决跨域问题 @RequestMapping("/test") public class EduTeacherController { } 详情参考 注解@CrossOrigin详 -
2种方式教你解决Java后端跨域问题
2022-04-08 11:25:12添加配置类解决Java跨域访问的问题。 -
Java服务器端跨域问题解决方案
2021-03-16 00:25:04这篇文章主要介绍了java服务器端跨域问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下现在很多开发的 API 都支持 ajax 直接请求,这样就会导致跨域... -
html用ajax请求服务器后端java接口跨域问题解决
2021-03-19 08:46:28在html页面加入以下代码:在java后端代码的接口中加入response.setHeader("Access-Control-Allow-Origin", "*");/*星号表示所有的域都可以接受,*/response.setHeader("Access-Control-Allow-Methods", "GET,POST");... -
解决前端调用后台接口跨域问题
2021-05-13 17:38:27在HTML用ajax跨域访问请求时报错: Access to XMLHttpRequest at ‘http://192.168.2.1:8080/portal/studentController.do?saveUserInfo’ from origin ‘http://oa.51.cn:3808’ has been blocked by CORS policy: ... -
Java后端服务跨域问题总结
2020-12-09 16:08:461.前后端服务调用的域名不一样是导致跨域问题最常见的原因。 例如:前端域名test.manager.cn调用后端域名testapi.manager.cn或者本地localhost调用后端域名testapi.manager.cn都会出现跨域的问题。 2.请求传参时,... -
前后端分离项目 前端发请求给后端java接口跨域问题解决访方案
2020-11-26 20:54:46出现跨域问题 当我们在前端项目中,向后端发送请求的获取课程数据的时候,出现了跨域问题: 已被CORS策略阻止:请求的资源上没有' Access-Control-Allow-Origin'标头(跨域请求失败) 在浏览器下f12报错信息如下: ... -
跨域问题Java后台解决
2022-01-24 22:50:48Java后台处理跨域问题 前端页面报cro错误,按跨域问题处理。后台在类或者调用的方法上加上注解@CrossOrigin得以解决 本地前端页面地址:@CrossOrigin({"http://localhost:63342"}) -
关于JS调用Java后台API跨域问题的解决方法
2017-07-11 14:01:57创建CORSFilter.javapublic class CORSFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest request, ServletRespon -
java:springboot后台解决接口跨域问题
2020-06-11 16:13:17首先启动类上肯定需要声明跨域 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.... -
自己Java写的接口给自己的angularjs调用跨域问题
2017-04-20 17:14:00在调用接口时会出现这个问题,截图是借用的别人的,我的忘了截图 在Java端先加入这两个 再在web.xml中写入代码 跨域过滤器 CORS com.thetransactioncompany.cors.CORSFilter ... -
js在调用java后台接口时候出现跨域问题的解决办法
2020-07-24 11:29:49在Controller层上添加注解@CrossOrigin springmvc与springboot项目都可以。 -
java+jQuery 处理跨域问题
2019-07-13 11:33:00最近做了一个项目,想在一个静态网页中直接请求外部服务器中的接口,实现数据共享,但是我当时忽略了一个问题,那就是跨域的问题。因为之前一直没有处理过这样的问题,就掉进这个坑中了。不过我还是很兴奋,早晚都是... -
跨域问题与JAVA解决方案
2022-03-08 22:38:24跨域问题及解决方案 -
Java 后端servlet处理跨域问题
2020-04-29 15:37:25Java 后端servlet处理跨域问题 这里我用的cors,个人感觉只要能解决性能没太慢就可以了。完全没必要一个问题搞了无数种方案,多学点其他的不好嘛? 首先是导入两个cors相关的包 以下的两个链接就是包的下载地址 ...