JFinal 项目跨域设置
跨域问题,源于浏览器的安全策略
同源策略
,它会限制一个域的文档或是脚本与另一个域的资源交互。如我们一个域的加载的JavaScript脚本调用另一个域的接口,则出于同源策略的影响,它会阻止进行交互。
怎么算跨域
- 当 两个url 协议、域名、端口三者之间任意一项不同即为跨域。
怎么解决跨域
HTML5中定义的一种解决资源跨域的策略Access-Control-Allow-Origin
,通过服务器返回带这个的标识Response header
,用来解决资源的跨域权限问题。
Access-Control-Allow-Origin: * //标识任何资源都可以使用
JFinal里面设置
- 设置一个全局拦截器
import javax.servlet.http.HttpServletResponse;
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;
public class CrossInterceptor implements Interceptor {
@Override
public void intercept(Invocation inv) {
// TODO Auto-generated method stub
if(inv.isActionInvocation()){
Controller c = inv.getController();
HttpServletResponse response = c.getResponse();
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Headers", "Content-Type,X-Requested-With");
}
inv.invoke();
}
}
Config文件添加拦截器
public void configInterceptor(Interceptors me) {
me.add(new CrossInterceptor());
}