Dellevin 发表于 2023-11-3 21:32

关于pdf预览问题的求助

使用场景是我提前用pdfjs搭建了pdf 的预览服务,这样就能在手机电脑上都能预览pdf了,其中pdfjs的服务网址是
http://xxxxxxx/file/viewer.html?file=
但是把,chrome可以预览pdf文件的,这样就可以实现pdf的下载了。
我的目的是设置
http://xxxxxxx/file/viewer.html?file=http://xxxxxxx/report/0000a383cb0e43f498438205711df2fb.pdf

这个是可以预览的

但是单独打开

http://xxxxxxx/report/0000a383cb0e43f498438205711df2fb.pdf

是不可以打开的,无法进行预览

我用的是nginx搭建的服务,请问能如何设置一下呢,我记得是可以的,前几天碰到过类似的场景,是设置域名白名单嘛?希望有大佬可以帮助一下!万分感谢

thinkflyer 发表于 2023-11-3 21:56

本帖最后由 thinkflyer 于 2023-11-3 21:58 编辑

这个取决于你xxxx 是别人的还是你的域名, 如果是自己的域名 完全可以单独对这个xxx域名进行限制,只允许 xxx 在自己服务器上打开。 其他ip 全部 deny掉就可以了。

使用nginx 的 deny allow 指令

Dellevin 发表于 2023-11-3 21:59

thinkflyer 发表于 2023-11-3 21:56
这个取决于你xxxx 是别人的还是你的域名, 如果是自己的域名 完全可以单独对这个xxx域名进行限制,只允许 x ...

都是自己的域名,我试过这样的,当我把http://xxxxxxx/report/0000a383cb0e43f498438205711df2fb.pdf
这个域名deny之后
http://xxxxxxx/file/viewer.html?file=http://xxxxxxx/report/0000a383cb0e43f498438205711df2fb.pdf
也无法预览了。。。

thinkflyer 发表于 2023-11-3 22:05

Dellevin 发表于 2023-11-3 21:59
都是自己的域名,我试过这样的,当我把http://xxxxxxx/report/0000a383cb0e43f498438205711df2fb.pdf
这 ...

你可以新建一个二级域名 交 pdf.xxx , 不能和网站域名相同。
或者对report 目录单独限制
location /report {
      root /opt/data/pdf;
      deny all;
      allow 192.168.135.1;

    }
仅供参考

Dellevin 发表于 2023-11-3 22:36

thinkflyer 发表于 2023-11-3 22:05
你可以新建一个二级域名 交 pdf.xxx , 不能和网站域名相同。
或者对report 目录单独限制
location /re ...

server{
        listen 80;
        server_name localhost;

        location /file/ {
                add_header Access-Control-Allow-Origin *;
                aliasD:/pdfview/web/;
                index index.html index.html;
        }
        location /ff/ {
                add_header Access-Control-Allow-Origin *;
                alias d:/pdfview/build/;
                index index.html index.html;
        }
        location /build/ {
                add_header Access-Control-Allow-Origin *;
                alias d:/pdfview/build/;
                index index.html index.html;
        }
        location /report/ {
                deny all;
                add_header Access-Control-Allow-Origin *;
                      alias d:/pdf/;
                index index.html index.html;
            }
       
}

我就是这样设置的
http://xxxxxxx/file/viewer.html?file=http://xxxxxxx/report/0000a383cb0e43f498438205711df2fb.pdf
就无法预览了

Dotty 发表于 2023-11-3 22:39

看起来很高级PDF有时候挺方便有时候很难搞

sai609 发表于 2023-11-4 10:18

wps里面由预览pdf的按钮开关

Dellevin 发表于 2023-11-4 10:29

sai609 发表于 2023-11-4 10:18
wps里面由预览pdf的按钮开关

我想实现一个网络的在线预览的方式{:1_923:}

照在指尖的星光 发表于 2023-11-4 10:48

如果pdf文件不是你的,别人可以把.pdf控制为下载或者预览。
如果.pdf文件是你的,完全没必要搭建pdfjs,宝塔上传的.pdf就能在线预览,如果你想实现下载功能,写一个按钮,点击就保存本网页内容,就是把.pdf下载下来。

vaycore 发表于 2023-11-4 11:22

你这个需求貌似有冲突啊,这个 pdfjs 是前端执行的,预览就必须要下载这个 PDF 文件(禁止访问后,那肯定就无法下载以及预览了)。虽然可通过 Origin 或者 Referer 请求头进一步限制(Origin Nginx配置方式示例:https://blog.csdn.net/qq_33204709/article/details/129232198),但这两个请求头通过发包软件伪造后依然可以下载到 PDF 文件
页: [1] 2
查看完整版本: 关于pdf预览问题的求助