为了账号安全,请及时绑定邮箱和手机立即绑定

Java处理七牛回调安全性问题

Java处理七牛回调安全性问题

30秒到达战场 2018-10-04 21:10:49
文档地址:http://developer.qiniu.com/docs/v6/api/overview/up/response/callback.h...这里给出的是PHP的demo,我用的是java语言获取明文:data = Request.URL.Path +”\n” +Request.Body 部分语言或框架无法直接获取请求body的原始数据,在自行拼接时应当注意,body中的数据是经过URL转义的这里的Request.Body在java中以流的方式读取是空值,如果以下方式读取Enumeration<String> paramNames = request.getParameterNames(); StringBuffer sBuffer = new StringBuffer(""); while(paramNames.hasMoreElements()){     String name = paramNames.nextElement();     String value = request.getParameter(name);     sBuffer.append("&" + name + "=" + value); }会拼装成文章中所说的格式,但是我无法知道顺序是否正确*file_get_contents('php://input') 获取RequestBody,其值形如:   *name=sunflower.jpg&hash=Fn6qeQi4VDLQ347NiRm-RlQx_4O2\ *&location=Shanghai&price=1500.00&uid=123有官方的技术人员帮忙解决吗?
查看完整描述

2 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

都可以获得原始的请求数据。
服务器获取到的是客户端提交的 流:InputStream 。
servlet中,request.getInputStream(); 这个就是原始的请求。中间框架或其它代码可能消耗这个流,用于解析提交的请求。如 request.getParameterNames(); 获得请求中的参数;框架拦截器替使用者解析了参数等。
直接使用 servlet ,在未执行其它操作前,获取 request.getInputStream();;
使用 struts2 等,去掉可能消耗流(可以去掉所有拦截器)的拦截器,直接获取 request.getInputStream();;
流 被消耗后,不能再次获取。请参考 servlet 相关文档。

查看完整回答
反对 回复 2018-10-14
  • 2 回答
  • 0 关注
  • 812 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号