Java跨域解决

摘要:
场景:2个不同语言的后端开发App,项目分别在两台服务器上,一台服务器上的H5网页中有需求需要请求另一台服务器的接口拿数据,造成跨域问题。true:false;System.out.println;}}2.在web.xml中加上跨域的配置请求SimpleCORSFiltercom.aone.app.filter.SimpleCORSFilterIsCrosstrueSimpleCORSFilter/*3.在Springmvc.xml中配置跨域请求4.maven依赖˂!

场景:2个不同语言的后端开发App,项目分别在两台服务器上,一台服务器上的H5网页中有需求需要请求另一台服务器的接口拿数据,造成跨域问题。

解决:

1.定义一个类,实现一个Filter接口(导包导servlet的包)

importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
public class SimpleCORSFilter implementsFilter {
    private boolean isCross = false;
    @Override
    public voiddestroy() {
        isCross = false;
    }
    @Override
    public voiddoFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throwsIOException, ServletException {
        if(isCross) {
            HttpServletRequest httpServletRequest =(HttpServletRequest) request;
            HttpServletResponse httpServletResponse =(HttpServletResponse) response;
            System.out.println("拦截请求: " +httpServletRequest.getServletPath());
            httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
            httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
            httpServletResponse.setHeader("Access-Control-Max-Age", "0");
            httpServletResponse.setHeader("Access-Control-Allow-Headers",
                    "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");
            httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true");
            httpServletResponse.setHeader("XDomainRequestAllowed", "1");
        }
        chain.doFilter(request, response);
    }
    @Override
    public void init(FilterConfig filterConfig) throwsServletException {
        String isCrossStr = filterConfig.getInitParameter("IsCross");
        isCross = isCrossStr.equals("true") ? true : false;
        System.out.println(isCrossStr);
    }
}

2.在web.xml中加上跨域的配置请求

    <!-- 跨域请求 -->
    <filter>
        <filter-name>SimpleCORSFilter</filter-name>
        <filter-class>com.aone.app.filter.SimpleCORSFilter</filter-class>
        <init-param>
            <param-name>IsCross</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>SimpleCORSFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

3.在Springmvc.xml中配置跨域请求

   <!-- 接口跨域配置 -->  
   <mvc:cors>  
       <mvc:mapping path="/**"
                    allowed-origins="*"
                    allowed-methods="POST, GET, OPTIONS, DELETE, PUT"
                    allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
                    allow-credentials="true" />  
   </mvc:cors>  

4.maven依赖

    <!--解决跨域问题-->
    <dependency>
      <groupId>com.thetransactioncompany</groupId>
      <artifactId>cors-filter</artifactId>
      <version>2.5</version>
    </dependency>

来源:https://blog.csdn.net/qq_43491717/article/details/84134832

免责声明:文章转载自《Java跨域解决》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ubuntu1804安装pycharm2018.3.xC# + ArcEngine 常用方法(不定时更新)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

springsession生成sessionid不一致问题解决

毫无疑问,我遇到的主要问题是两个不同版本的spring boot,需要共享sessionid。...

mysql之排序查询

高级文章目录3:排序查询功能:1.按单个字段排序案例1:查询员工信息,要求工资从高到低排序2.为排序添加筛选条件案例1:部门编号˃=90的员工信息,按员工编号降序排序案例2:部门编号˃=90的人员信息,按输入时间排序。按表达式排序案例1:按年薪显示员工信息和年薪4按别名排序案例1按年薪升序查询员工信息5.按函数(长度)排序案例1查询员工姓名并按姓名长度减少...

websphere application server (was) 安装8.5.5.18

目录环境准备所需的软件或系统版本安装包目录结构安装步骤安装was8.5.0.0升级到8.5.5.18打开浏览器以访问控制台环境准备如果系统主机名不是localhost,您需要将所需的软件或系统版本jdk1.8centos7.5WAS提前添加到/etc/hosts/文件中_ ND_V8.5_1_OF_3.zipWAS_ ND_V3.5_2_OF_3.zip代理...

windows下mstsc 远程Ubuntu 教程

为远程桌面控制设置Ubuntu 16.04的缺点是重新启动系统需要使用监视器登录系统。首先,我们将Ubuntu远程控制设置为允许远程连接,进入系统-˃首选项-˃桌面共享,或直接搜索桌面共享。如图所示,选中此项,然后选中安全项,并设置远程密码。...

VMware虚拟机几个常用文件夹介绍

将在虚拟机系统文件下自动生成三个锁文件。虚拟系统正常关闭后,VMware将解锁,“systemTyep.vmdk.lck”和“systemType.vmem”文件夹将消失。当RAM运行缓慢时,它会将数据从RAM移动到一个称为“分页文件”的空间。...

[转]从minio中读取文件流进行下载文件

本文转自:https://blog.csdn.net/ZHANGLIZENG/article/details/82892678一、获取Minio连接publicstaticStringminioUrl;publicstaticStringminioUsername;publicstaticStringminioPassword;@Value("${syste...