当前位置: 首页 > news >正文

做建材网站怎么做保健品网站建设策划书

做建材网站怎么做,保健品网站建设策划书,wordpress3.9.1中文,玉器网站模版文件服务使用 minio,使用 nginx 反向代理。 将文件存放在 minio 上,如果是公开的文件,则统一放到一个桶,设置为公开只读。 如果是私有文件,则使用临时链接,给有权限的用户查看和打印。 要实现在 html 页…

文件服务使用 minio,使用 nginx 反向代理。

将文件存放在 minio 上,如果是公开的文件,则统一放到一个桶,设置为公开只读。

如果是私有文件,则使用临时链接,给有权限的用户查看和打印。

要实现在 html 页面上,弹框显示 pdf 和打印。

遇到问题:

问题 1 跨域安全问题,浏览器不允许加载

由于我的某个主页面上加了安全标签(<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">),导致报错:“Failed to load resource: net::ERR_CONNECTION_RESET”, 请求头出现警告信息:"Provisional headers are shown Learn more"

demo 页面就可以正常下载文件,排查了好久才发现是安全标签的问题。

问题 2 显示 pdf 文件

从后端把 minio 中的 pdf 文件链接(使用 minio 的客户端生产的临时链接)返回给前端,但是 浏览一直不显示文件,直接就下载了保存到了本地,使用 embed 标签或者 iframe 都不行。以为是 nginx 问题,不管如何配置,都不行。后来使用 pdf.js 来处理,果然可以显示 pdf 文件。

问题 3 打印 pdf 文件。

打印 pdf ,并没有达到效果,打印的竟然是网页页面,折腾了好久,都不能实现打印 pdf 原文件。

最后决定后端把 pdf 文件下载到 tomcat 的目录,再把这个 tomcat 中的文件链接返回给前端。使用 spring 的 restTemplate 来下载文件(临时链接),结果遇到 403 ,真奇怪。不管我如何处理,始终报 403。后面参考(设置 user agent)了别人的做法,终于可以下载了。

String u = URLDecoder.decode(addr, StandardCharsets.UTF_8.name());URL url = new URL(u);HttpURLConnection connection = ((HttpURLConnection)url.openConnection());connection.addRequestProperty("User-Agent", "Mozilla/4.0"); // 这里是用来处理 403 错误的。InputStream input = null;try {if (connection.getResponseCode() == 200) {Map<String, List<String>> headerFields = connection.getHeaderFields();headerFields.forEach((key,list)->{if (key != null) {response.setHeader(key, list.get(0));}});input = connection.getInputStream();// 文件流复制/转发StreamUtils.copy(input, response.getOutputStream());} else {input = connection.getErrorStream();}} finally {try {input.close();} catch (Exception e) {}}

后来我一想,直接新开文件下载接口,把 pdf 文件下载文件流直接转发给前端 iframe ,看看如何。 结果成功显示并且还可以打印。此时我并没设置 Content-Type 返回头 header。让我顿然开朗,马上检查在 minio 中的文件的 content type 为 application/octet-stream ,不是 pdf 类型。原来文件上传到 minio 时没有处理好文件类型。导致下载文件时,浏览器直接把文件下载。处理好后,重新上传 pdf 文件,文件类型为 application/pdf。在文件下载文件流转发给前端时,把下载时返回 header 也全部转发给前端,达到想要的效果。

然后我再重新把 pdf 文件的 minio 的临时链接给 iframe 的 src,成功达到效果。

总结:要注意跨域问题,即使在本地开发,localhost 和 本机 Ip 两个方式也会存在跨域问题。

文件流可以直接转发。文件类型要正确,否则浏览器不会打开显示文件,会直接下载。

http://www.yayakq.cn/news/184014/

相关文章:

  • 网站关键词如何快速上首页平湖有做网站得吗
  • 二手车辆交易网站如何做网站搭建公司
  • 政务网站设计wordpress如何做到手机端
  • 网站后台无法上传本地图片清溪镇网站仿做
  • 沾益住房和城乡建设局网站分析杭州高端网站建设开发的区别
  • 网站建设人员配备毕节做网站
  • 上杭网站制作网站建设学什么语音
  • 领优惠卷的网站怎么做囯家信用信息公示系统
  • 焦作做网站推广爱前端wordpress5.0.3主题
  • 网站建设合同技术开发合同合肥建设网站哪个好
  • 宠物网站设计与制作灯饰 技术支持 东莞网站建设
  • 网站怎么做直播间怎么做微信小程序
  • 网站源码在线下载比较出名的网站域名
  • 营销类网站建设需要注意的问题网站公众号信息化建设工作计划
  • 网站收录没了承德网站建设费用
  • 做包装一般看什么网站安徽省住房和城乡建设厅网站首页
  • 网站建设服务哪家好 价格多少钱物联网是干什么的用的
  • 给自己做的网站换首页wordpress域名变回80
  • wordpress建站课程自己可以学着做网站吗
  • 垂直电子商务网站建设网站非法收录用户信息
  • 网页设计作业个人网站上线一款app需要多少钱
  • 做网站wamp和xampwordpress 开发 pdf
  • 网站功能介绍是什么自己电脑怎么做网页
  • 班级设计网站建设如何做网站建设团队建设
  • 昆山做网站哪家好失物招领网站开发项目需求分析
  • 营销型网站建设策划书怎么写做旅游网站的设计感想
  • 网站导航栏代码加入网站帮忙做网站
  • 网站 域名解析错误手机app制作多少钱
  • 淄博周村专业网站建设公司怎样看一个网站是谁做的
  • 织梦做网站需要钱吗沧州快速关键词排名优化