【问题标题】:Javascript - avoid download file by browser when preview is failingJavascript - 预览失败时避免通过浏览器下载文件
【发布时间】:2017-10-06 08:48:11
【问题描述】:

我将 quasar-framework 与 vue 结合使用,并且在用户单击重定向到文件路径的链接后,我正在绑定对象属性以将文档嵌入到 iframe 中。我不想修复没有向我显示文件的那个我只想解决以下问题:

有什么方法可以阻止浏览器默认下载一个选定的文件,当它无法显示时嵌入到 iframe 中查看?

<iframe id="content_iframe" v-bind:src="file.content_url" style="width:100%; background-color: gray" frameborder="0" scrolling="no"></iframe>

file.content_url 包含:"http://10.20.60.30:5010/files/1/content/"

我需要控制这一点,因为当我加载新路由(然后加载 File.vue)时,浏览器会下载名为“content”的文件,我想避免从用户可以下载的新路由中下载或不是通过按钮(有效)的文件。

【问题讨论】:

    标签: javascript browser vuejs2 quasar


    【解决方案1】:

    您应该使用标签object 而不是iframe 来嵌入文档。如果浏览器无法呈现嵌入在object 中的文档,则不会强制下载,也不会显示任何内容。

    <object width="400" height="400" data="FILE_URL" type="FILE_CONTENT_TYPE">
        <embed src="FILE_URL" type="FILE_CONTENT_TYPE" />
    </object>
    

    来源:

    【讨论】:

    • 请注意,这可能是一件非常不安全的事情。下面是一个使用用户上传的恶意 SVG 来利用 XSS 漏洞的示例:exploit.html:&lt;object width="400" height="400" data="./evil.svg" type="image/svg+xml"&gt;&lt;embed src="./evil.svg" type="image/svg+xml" /&gt;&lt;/object&gt;evil.svg:&lt;svg version="1.1" xmlns="http://www.w3.org/2000/svg"&gt;&lt;script type="text/javascript"&gt;alert('EXPLOITED')&lt;/script&gt;&lt;/svg&gt;
    猜你喜欢
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 2013-02-24
    相关资源
    最近更新 更多