gpt4 book ai didi

javascript - 在 Chrome 中禁止另存为对话框

转载 作者:行者123 更新时间:2023-11-30 05:51:47 25 4
gpt4 key购买 nike

如果我正在制作 Chrome 扩展程序,如果服务器强制显示“另存为...”对话框,我该如何在新标签页中打开图片?如我所见,它与 Content-Disposition header 属性有关。
有许多关于如何强制浏览器打开该对话框的服务器端问答,但我什么也找不到,作为不想要该对话框窗口的最终用户如何与之抗争。

最佳答案

[RFC 822] 的扩展 BNF 符号中, 内容处置头字段定义如下:

    disposition := "Content-Disposition" ":"
disposition-type
*(";" disposition-parm)

disposition-type := "inline"
/ "attachment"
/ extension-token
; values are not case-sensitive

disposition-parm := filename-parm / parameter

filename-parm := "filename" "=" value;

如果忽略处置参数,它只会执行以下操作。

"content-disposition","attachment; filename=fname.jpeg"在服务时下载 jpeg 文件。

"content-disposition","inline; filename=fname.jpeg"显示 jpeg 文件而不是在服务时下载 jpeg 文件。

此行为取决于浏览器和您尝试提供的文件。

例如,如果您有一个 JPEG 文件,内联 disposition-type 将在浏览器中打开图像,而附件将强制下载它。

如果您使用的是 .ZIP 文件,浏览器将无法内联显示它,因此对于内联和附件 disposition-type,将下载该文件。

您必须使用 WebRequest API 来修改您的 header

示例代码

chrome.webRequest.onBeforeSendHeaders.addListener(

function (details) {//Modify Headers
details.requestHeaders.push({
"name": "content-disposition",
"value": "inline; filename=`_some_filename.some_extension`"
});
return {//Update Headers
requestHeaders: details.requestHeaders
};
}, {
urls: ["<all_urls>"]
}, ["blocking", "requestHeaders"]);//Block the requests

确保你声明

"permissions": [
"webRequest",
"webRequestBlocking"
]

在你的 list 文件中

引用资料

编辑 1

为此代码添加您的 URL 并检查它是否仍会抛出一个另存为对话框。

chrome.webRequest.onHeadersReceived.addListener(

function (details) {

var _content_to_append = {
"name": "content-disposition",
"value": "inline"
};
details.responseHeaders.push(_content_to_append);
return {
responseHeaders: details.responseHeaders
};
}, {
urls: ["<all_urls>"]
}, ["blocking", "responseHeaders"]);

关于javascript - 在 Chrome 中禁止另存为对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com