发表于: 2019-12-07 23:44:01
1 1210
今天完成的事:
1、查看阿里默认强制下载的解决办法。
昨天是将文件http头的content-type改为“image”才能直接url查看图片。
但是再次上传还是默认的http头,今天查看彻底的解决办法。
(1)查看content-type。
首先content-type简称MIME,意思是多用途互联网右键扩展类型,是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问时,浏览器会自动使用指定应用程序来打开。多用于指定一种客户端自定义的文件名,以及一种媒体文件打开方式。
而OSS中默认是会匹配上传的文件类型,根据上传文件类型,比如jpg,会自动识别成图片文件。
查看下之前上传的文件,log类型的文件content-type默认是“application/octet-stream”,jpg类型的图片content-type默认是“image/jpeg”。
log类型的文件默认content-type。
jpg类型的文件默认content-type。
(2)查找解决强制下载的方法。
在官网查找,都是说直接在控制台修改http头,也就是昨天的解决办法。这样不能治根。
但是找了很久,都是如何设置强制下载,没有如何关闭强制下载的。。难道只有我有这个需求??
没办法,只能看了下如何设置,再看看怎么能取消强制下载。
这里设置强制下载有两种方法,如下:
一种是设置http头的content-disposition,是指当用户想把请求所得的内容存为一个文件时提供的一个默认文件名。
将值设为“ attachment;filename="XXX.jpg" ”,其中attachment表示强制下载,filename表示下载后的保存文件名。
但是查看上传的文件http头,只有content-type有信息,content-disposition没有设置。
另一种就是设置http头的content-type。
另外又找到了一种解决办法,说是需要绑定域名,这里先放着,有待研究。
按照所说,查看谷歌浏览器的响应头,如下,其content-disposition确实是attachment,表示强制下载。
查看谷歌浏览器响应头的方法,f12,选择network,all,代表拦截全部数据类型,进行刷新,点击所看资源,可以查看对应的响应头。
(3)解决阿里默认强制下载。
没有其他好办法了,查看上传的文件http头,只有content-type有信息,content-disposition没有设置。
只能在上传时设置文件的content-type,这里没有找到什么content-type可以取消强制下载,因为昨天尝试着改成“image”可以解决问题,这里就直接设置成“image”。
将原有的直接调用putObject()方法,上传文件,创建PutObjectRequest对象,构造上传请求后,再上传文件。
// 上传文件。<yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
// 数据流上传,将 MultipartFile 转为 InputStream,适用于所有的InputStream子类。
ossClient.putObject(bucketName,fileName,new ByteArrayInputStream(multipartFile.getBytes()));
修改后:
// 创建PutObjectRequest对象,构造上传请求。
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,fileName,new ByteArrayInputStream(multipartFile.getBytes()));
// 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。
ObjectMetadata metadata = new ObjectMetadata();
// 这里也能设置content-disposition,但是不知道设置为什么可以取消强制下载。
// metadata.setContentDisposition();
// 指定Content-Type
metadata.setContentType("image");
putObjectRequest.setMetadata(metadata);
ossClient.putObject(putObjectRequest);
这里直接将content-type设置成“image”,因为只是上传头像,如果用于其他文件上传,就需要根据文件后缀判断设置成哪些content-type。
2、查看了阿里云的在线数据迁移,结果因为功能在公测,需要申请,一直没有下来,这里就不写了,等申请下来,实际操作后再写日报。
3、查看短信、邮箱防攻击的方法。
防范手段主要有:
(1)短信发送间隔设置。
设置同一号码重复发送短信的时间间隔。
(2)IP限定。
设置每个IP每天的最大发送量。
(3)手机号码限定。
设置每个手机号每天的最大发送量。
(4)流程限定。
将手机验证和用户密码设置分为两个步骤,用户在注册用户名密码成功后,才进行手机验证。
(5)绑定图形验证码。
将图形验证码和手机验证码绑定,输入手机号后,需要输入图形验证码才可以触发短信、邮箱,有效防止恶意攻击,大型网站基本采用该方式。
这里的思路是将手机号添加特定字符串后,以key存入缓存,将该手机号的注册的次数以value保存,并设置过期时间,就可以通过判断手机号的注册次数,该缓存的过期时间来进行设置,是否可以进行注册。
找到的方法是判断缓存中的该手机号有几个键值对来判断注册次数,这样如果有第一次注册过期了,那就可以再注册一次,不符合实际状况,这里没有采用,代码就不放了。明天整理一下,按照我的思路来完善代码后再放。
明天计划的事:
1、完成短信、邮箱防攻击策略。
2、完成阿里云数据迁移。
3、将代码集成到项目中,准备提交。
遇到的问题:
无
收获:
1、查看阿里默认强制下载的解决办法。算是暂时解决了。
2、查看了阿里云的在线数据迁移,但是申请没有下来。。
3、查看短信、邮箱防攻击的方法。简单实现了下,但是不符合实际,有待调整。
评论