在 [RFC 822] 的扩展 BNF 表示法中,Content-Disposition
头域定义如下:
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,来修改你的标题
示例代码
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"
]
在您的清单文件中
参考文献
编辑 1
添加此代码的 URL 并检查它是否仍会引发 save as 对话框。
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"]);