jFinal前后端分离跨域处理

看到群里很多跨域问题,自己开发中也有此类需求,看到前人写了些介绍,按照提示做了实战,直接上代码参考:

public class CorsInterceptor implements Interceptor {
 
    @Override
    public void intercept(Invocation inv) {
        inv.invoke();
        HttpServletResponse response = inv.getController().getResponse();
        response.setContentType("application/json;charset=UTF-8");
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, HEAD");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
    }
}

控制器中应用:

@Before(CorsInterceptor.class)
public class TstController extends Controller {
	
	@Inject
	IteService srv;
	
	public void test() {
		String mUrlParam = getPara("Parameter");
		Ret ret = null;

		if (getRequest().getMethod().equals("OPTIONS")) {
			ret = Ret.ok("result", "options");
			renderJson(ret);

			return;
                }
		
		String jsonString = HttpKit.readData(getRequest());
		if (jsonString != null &&  jsonString != "") {
			try {
				Kv kv = FastJson.getJson().parse(jsonString, Kv.class);
				
				ret = Ret.ok("result", mUrlParam);
        		        renderJson(ret);
			} catch (Exception e) {
				ret = Ret.fail("result", "失败");
				renderJson(ret);
				
				return;
			}
		} else {
			ret = Ret.fail("result", mUrlParam);
			
			return;
		}
	}
}


评论区

longjl

2019-07-25 14:42

跨域处理配置在过滤器里岂不更好

杜福忠

2019-07-25 18:45

写接口应用, 这样还不算特别方便, 我前一段时间也写了一套接口操作, 比较方便点纯JSON交互的例子
https://gitee.com/yun_final/JFinal-API/blob/master/src/main/java/com/yunfinal/api/demo/DemoApi.java

prelove

2019-07-26 09:55

Access-Control-Allow-Methods里最好加个HEAD,便于通过header传输JWT TOKEN

jfinal009

2019-07-26 16:54

@prelove 谢谢提示

大Z

2019-07-27 13:47