背景
在项目开发需求中,要在B服务器中开放一个http服务,A服务器中对这个服务进行访问获取json响应报文处理,因此就遇到了ajax跨域问题。
一些思考
从互联网中查询ajax跨域的解决方案,同时结合自身需求有了解决问题的一些方法,如下:
- 在ajax请求属性中配置使用jsonp,添加callback方法,在B服务器中响应体增加callback方法。
- 将ajax调用专向http客户端调用。
-
在B服务器中检查是否使用一些容器,可对Nginx 、Tomcat进行一系列的配置达到相应跨域目的。
接下来着重介绍tomcat跨域配置。
tomcat跨域
在tomcat容器中增加cors-filter-1.7.jar、java-property-utils-1.9.jar,同时将web.xml文件配置怎加一个过滤器,如下:
<filter>
<async-supported>true</async-supported>
<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>*</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>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
小结
跨域不可怕,重要的是根据实际问题,项目条件来解决相应难题。上文中提到的其余两种方法也可以实现跨域,动手试试吧!