JFinal 项目跨域设置

跨域问题,源于浏览器的安全策略同源策略,它会限制一个域的文档或是脚本与另一个域的资源交互。如我们一个域的加载的JavaScript脚本调用另一个域的接口,则出于同源策略的影响,它会阻止进行交互。

怎么算跨域

  • 当 两个url 协议、域名、端口三者之间任意一项不同即为跨域。
url 请求url 是否跨域 原因
https://www.cnblogs.com/ http://www.cnblogs.com/ 协议不同
https://www.cnblogs.com/ https://www.baidu.com/ 域名不同
https://www.cnblogs.com:8080/ https://www.baidu.com:8088/ 端口不同
https://www.cnblogs.com/ https://www.cnblogs.com/chenjy1225/ 同源

怎么解决跨域

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());
	}

原文地址:https://www.cnblogs.com/chenjy1225/p/14687790.html