SSM-遇见的一些小坑(五)解决跨域问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hold_on_/article/details/89379003

当两台主机上的前后端分离的项目进行测试时,不用把项目发到另一个人的主机上进行配置测试,直接访问另一台主机,把他当成一个服务器来访问,但是这就有跨域的问题了,关于跨域问题可以看看这个:http://baijiahao.baidu.com/s?id=1600336765894546070&wfr=spider&for=pc

 下边来解决跨域问题:

一种很简单添加两句话就ok了,但是缺点也很明显,那就是你每个Servlet运行时都需要添加这个,会有点麻烦!

public void cross(HttpServletRequest request, HttpServletResponse response) {
		response.setHeader("Access-Control-Allow-Origin",request.getHeader("origin"));
		response.setHeader("Access-Control-Allow-Credentials", "true");
}

另一种:

先是pom.xml添加依赖:

 <!-- 跨域支持-->
 <dependency> 

     <groupId>com.thetransactioncompany</groupId> 

     <artifactId>cors-filter</artifactId> 

     <version>2.5</version> 

 </dependency>

然后 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>

  关键参数的解释:

cors.allowOrigin指的可以通过的ip,代表所有,可以使用指定的ip,多个的话可以用逗号分隔,默认为 
cors.supportedMethods指的是请求方式 默认为* 
cors.supportedHeaders请求支持的头信息,默认为* 
cors.exposedHeaders暴露的头信息,默认的empy list 
cors.supportsCredentials支持证书,默认为true 
cors.maxAge 最大过期时间,默认为-1 
cors.tagRequests 默认为false 
cors.allowSubdomains允许子域 默认为false

猜你喜欢

转载自blog.csdn.net/hold_on_/article/details/89379003
今日推荐