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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值