H5跨域请求解决方式整理

H5跨域解决方式整理

以前工作中遇到过关于前端跨域访问问题,今天把解决方式总结整理一下。

1、jsonp(仅限GET请求,伪码):

String callback = request.getParameter("callback");
callback = checkCallback(callback);//防注入
//HttpServletResponse response
response.setContentType("text/html");  
response.setCharacterEncoding("utf-8");

PrintWriter out = response.getWriter();
out.write(callback+"("+json+")");  //json就是业务json数据

其中checkCallback方法,是基于安全性考虑,防止前端提交一些脚本注入。

主要就是过滤掉callback中的script、javascript、<、> 等字符。

2、Cross-Origin Resource Sharing协议,需要浏览器支持:

response.setHeader("Access-Control-Allow-Origin", "https://xxx.xx.com");
response.setHeader("Access-Control-Allow-Credentials", "true");//允许发送cookie

服务器端的HttpServletResponse中设置一下就可以。

如果允许发送cookie,则Access-Control-Allow-Origin不能设置为 * 。

如果设置为 * ,则表示允许所有域名的脚本访问该资源,不过出于安全性,生产环境不要这样设置。

关于CORS协议详细介绍,可以参考这篇资料:http://www.ruanyifeng.com/blog/2016/04/cors.html

猜你喜欢

转载自shensy.iteye.com/blog/2374255