精华内容
下载资源
问答
  • Java接口遇见跨域问题怎么解决?看完再也不用害怕了
    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接口,维护服务。

    更多相关内容
  • reMap.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跨域请求问题 ...2. 上面的方法解决的是部分功能的跨域问题, 有的时候我们需要全局跨域,
  • java 解决接口跨域

    2021-09-24 15:16:43
    1.引入库 代码如下(示例): import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.... import java.io.IOException;... * @Desc 解决跨域问题 */ @Component p

    1.引入库

    代码如下(示例):

    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解决请求跨域的两种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 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:02
    Spring MVC 从4.2版本开始增加了对CORS的支持,可以全局配置,也可以对类或方法配置;可以通过Java代码,也可以通过xml配置方式。...Java配置新建一个类,做跨域的配置@Configuration@EnableWebMvcpublic ...
  • 前提要该外部接口封装好json返回值,然后main方法测试调用接口即可 package com.utils; import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; ...
  • https://blog.csdn.net/qq_41463655/article/details/89703831?tdsourcetag=s_pctim_aiomsg
  • Java解决跨域问题

    千次阅读 2021-05-03 16:06:58
    我们在开发过程中经常会遇到前后端分离而导致的跨域问题,导致无法获取返回结果。跨域就像分离前端和后端的一道鸿沟,君在这边,她在那边,两两不能往来. 什么是跨域(CORS) 跨域(CORS)是指不同域名之间相互访问...
  • 本人在基于Oauth2.0做鉴权/授权时,配合前端联调接口时,已经让前端请求时的请求头带上key:Authorization,但是前台报错为跨域问题,后台报错鉴权失败,于是跟踪错误,发现在网关处从header中一直拿不到这个 ...
  • 跨域配置 1、什么是跨域 浏览器从一个域名的网页去请求另一个域名的资源时,域名、...@CrossOrigin //解决跨域问题 @RequestMapping("/test") public class EduTeacherController { } 详情参考 注解@CrossOrigin详
  • 添加配置类解决Java跨域访问的问题
  • 这篇文章主要介绍了java服务器端跨域问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下现在很多开发的 API 都支持 ajax 直接请求,这样就会导致跨域...
  • 在html页面加入以下代码:在java后端代码的接口中加入response.setHeader("Access-Control-Allow-Origin", "*");/*星号表示所有的域都可以接受,*/response.setHeader("Access-Control-Allow-Methods", "GET,POST");...
  • 在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: ...
  • 1.前后端服务调用的域名不一样是导致跨域问题最常见的原因。 例如:前端域名test.manager.cn调用后端域名testapi.manager.cn或者本地localhost调用后端域名testapi.manager.cn都会出现跨域的问题。 2.请求传参时,...
  • 出现跨域问题 当我们在前端项目中,向后端发送请求的获取课程数据的时候,出现了跨域问题: 已被CORS策略阻止:请求的资源上没有' Access-Control-Allow-Origin'标头(跨域请求失败) 在浏览器下f12报错信息如下: ...
  • 跨域问题Java后台解决

    2022-01-24 22:50:48
    Java后台处理跨域问题 前端页面报cro错误,按跨域问题处理。后台在类或者调用的方法上加上注解@CrossOrigin得以解决 本地前端页面地址:@CrossOrigin({"http://localhost:63342"})
  • 创建CORSFilter.javapublic class CORSFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest request, ServletRespon
  • 首先启动类上肯定需要声明跨域 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org....
  • 调用接口时会出现这个问题,截图是借用的别人的,我的忘了截图 在Java端先加入这两个 再在web.xml中写入代码    跨域过滤器  CORS  com.thetransactioncompany.cors.CORSFilter      ...
  • 在Controller层上添加注解@CrossOrigin springmvc与springboot项目都可以。
  • 最近做了一个项目,想在一个静态网页中直接请求外部服务器中的接口,实现数据共享,但是我当时忽略了一个问题,那就是跨域问题。因为之前一直没有处理过这样的问题,就掉进这个坑中了。不过我还是很兴奋,早晚都是...
  • 跨域问题及解决方案
  • Java 后端servlet处理跨域问题 这里我用的cors,个人感觉只要能解决性能没太慢就可以了。完全没必要一个问题搞了无数种方案,多学点其他的不好嘛? 首先是导入两个cors相关的包 以下的两个链接就是包的下载地址 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,465
精华内容 7,786
关键字:

java接口调用跨域问题

java 订阅