• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
勇哥
老骥伏枥志在千里、后知后觉
博客园    首页    新随笔    联系   管理    订阅  订阅
web访问跨域问题

在项目中前端和后端独自开发的时候、因为要联合调试项目、但是每端又根据环境需要才能运行时、会造成项目不在同一个服务器下、访问间会造成跨域访问问题

参考网上资料及自身实践中遇到的问题及最后成功解决现总结一下方便自己也方便别人:

查阅资料加自己总结发现可以有三种方法来解决跨域问题:

1、Tomcat自带的过滤器

      优点:利用Tomcat过滤器能统一解决该应用服务器下的所有项目的跨域问题。

      缺点:不够灵活、大包圆解决

2、第三方的常用工具包过滤器

       优点:只针对需要解决跨域应用的项目解决不涉及其他、不用过多造成不必要的过滤器

3、Spring Mvc4.2及以上的注解

 

Tomcat自带的过滤器:

 在在Tomcat服务器下conf/web.xml中添加filter配置如下:

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
  <init-param>
    <param-name>cors.allowed.origins</param-name>
    <param-value>*</param-value>
  </init-param>
  <init-param>
    <param-name>cors.allowed.methods</param-name>
    <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
  </init-param>
  <init-param>
    <param-name>cors.allowed.headers</param-name>
    <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
  </init-param>
  <init-param>
    <param-name>cors.exposed.headers</param-name>
    <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
  </init-param>
  <init-param>
    <param-name>cors.support.credentials</param-name>
    <param-value>true</param-value>
  </init-param>
  <init-param>
    <param-name>cors.preflight.maxage</param-name>
    <param-value>10</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

第三方的常用工具包过滤器:
下载第三方下面两个jar
cors-filter-1.7.jar、java-property-utils-1.9.jar导入自己工程项目中或者可以在http://mvnrepository.com/artifact/com.thetransactioncompany/cors-filter 选择某个版本加入pom.xml中
在自己工程的web.xml中增加如下过滤器:
<filter>
    <filter-name>CORS</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    <init-param>
     <param-name>cors.allowOrigin</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
     <param-name>cors.supportedMethods</param-name>
        <param-value>GET, POST, HEAD, PUT, DELETE</param-value>
    </init-param>
    <init-param>
     <param-name>cors.supportedHeaders</param-name>
        <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
    </init-param>
    <init-param>
        <param-name>cors.exposedHeaders</param-name>
        <param-value>Set-Cookie</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportsCredentials</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CORS</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Spring Mvc4.2以上
在springmvc中增加如下配置
<mvc:cors>
<mvc:mapping path="/**" allowed-origins="*" allow-credentials="true" max-age="1800" allowed-methods="GET,POST,OPTIONS"/>
</mvc:cors>
在java文件中利用注解
@CrossOrigin


参考文章:
https://www.cnblogs.com/chiyouguli/p/4283349.html
https://blog.csdn.net/qq_24459481/article/details/77124541
https://blog.csdn.net/u013803262/article/details/54982722
 

 

 

posted on 2018-10-13 07:15  刘关长  阅读(232)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3