这几天在开发中编写项目时须要先后端分离,恰好涉及到跨域这个问题,很早以前作项目时也用过,也是在网上找的列子,来源已经无处可寻了,若侵必删!前端
跨域问题通常出现二者服务器不一样或者不一样的端口上访问资源时会存在的问题,本文章目前适用于SpringMVC上,其余框架暂时还没涉猎,等之后接触到后在补充。java
本次解决跨域的问题使用的是 filter.jar 包实现。web
<!--跨域--> <dependency> <groupId>com.thetransactioncompany</groupId> <artifactId>cors-filter</artifactId> <version>2.5</version> </dependency>
(直接复制便可)后端
<!--*****跨域问题*****--> <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,OPTION</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> <init-param> <param-name>cors.maxAge</param-name> <param-value>3600</param-value> </init-param></filter> <filter-mapping> <filter-name>CORS</filter-name> <url-pattern>/*</url-pattern>
</filter-mapping>
这段配置代码就不做太多解释,直接复制便可使用。跨域
import javax.servlet.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class KuaY implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age","3600"); response.setHeader("Access-Control-Allow-Headers","x-requested-with, content-type"); chain.doFilter(req, res); } @Override public void init(FilterConfig filterConfig) {} @Override public void destroy() {} }
以上方式不须要前端编写任何代码,直接后台所有搞定,使用方式就是继承 KuaY 这个实现类,全部先后端皆可跨域实现。原理能够本身去研究一下,路漫漫其修远兮,欢迎拍砖! 服务器