当两台主机上的前后端分离的项目进行测试时,不用把项目发到另一个人的主机上进行配置测试,直接访问另一台主机,把他当成一个服务器来访问,但是这就有跨域的问题了,关于跨域问题可以看看这个: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