赶紧百度一下,找到了两种解决方法,现在将这两种方法整合在一起。
1、是在pom.xml和web.xml中配置CORS进行解决。在这里直接把别人的链接copy过来了(该项目是基于maven项目):http://www.jfinal.com/share/260
需要注意一点是web.xml的配置必须要在jfinal的配置之前,pom.xml按照上面的链接直接加进去就可以了,下面我把web.xml的代码贴出来一下。
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee">
<!-- cors -->
<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>
<!-- jfinal -->
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>com.ssc.MainConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping></web-app>
2、直接增加一个路由级别的跨域拦截器,加在路由之前。拦截器中加入如下两行代码,然后再在路由器中加上该拦截器。该方法的原理就是每次请求controller之前都先进行设置跨域许可设定。还有一种jsonp的方式,这里就不说了,可以参考链接:https://my.oschina.net/aixiaohua/blog/662221
/*
* 前端解决跨域问题
*/
public class CorsInterceptor implements Interceptor {
@Override
public void intercept(Invocation inv) {
inv.getController().getResponse().addHeader("Access-Control-Allow-Origin", "*");
inv.invoke();
}
}
至于跨域的原理,我个人的理解就是html5页面请求本地服务器不会发生跨域问题,当处于一种前后端分离开发时候,由于别人请求的是我台电脑(服务器)的数据,就会发生跨域问题。如果想更详尽的了解,大家可以自行百度。(本人没有深入了解,只是一些浅知拙见,如有误,请大神们不吝赐教。)