服务器端本身是支持跨域的,所有请求都可以进入后台,只是返回的时候如果不是同源请求,js不接受,防止安全问题,需要服务端在返回头中明确规定支持,则可以接受跨域

设置过滤器允许跨域

<!-- 跨域配置 -->
<bean id="corsFilter" class="org.springframework.web.filter.CorsFilter">
<constructor-arg name="configSource">
<bean class="org.springframework.web.cors.UrlBasedCorsConfigurationSource">
<property name="corsConfigurations">
<map>
<entry key="/**">
<bean class="org.springframework.web.cors.CorsConfiguration">
<property name="allowCredentials" value="true"/>
<property name="allowedMethods">
<list>
<value>GET</value>
<value>POST</value>
<value>HEAD</value>
</list>
</property>
<property name="allowedHeaders" value="*"/>
<property name="allowedOrigins" value="*"/>
</bean>
</entry>
</map>
</property>
</bean>
</constructor-arg>
</bean>

web.xml中配置过滤器

<filter>
<filter-name>myCorsFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetBeanName</param-name>
<param-value>corsFilter</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>myCorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

这里使用了DelegatingFilterProxy代理corsFilter,这样做的好处是把filter的创建也交给了spring管理。