在 DOM 元素发起的请求上设置请求标头

Setting Request Header on DOM element initiated requests

本文关键字:请求 设置 DOM 元素      更新时间:2023-09-26

我正在尝试通过对所有传出请求设置自定义请求标头来跟踪通过应用程序发出的所有请求。 我能够通过以下方式完成此操作:

$ajax.Setup(
    beforeSend: ...

但是,当 dom 元素(即 iframe、视频、对象等)上的 src 属性发起请求时,我遇到了一个问题。 搜索时我发现:更改iframe src时如何设置自定义http标头? 但是,当我尝试这样做时,我无法让它启动下载对话框。 该代码如下所示:

var request = $.ajax({
    context: this,
    url: URI,
    type: 'GET',
    statusCode: {
       200: function(data) {
           var id = '#download-iframe';
           var $iframe = $(id);
           if($iframe.length === 0) {
              $iframe = $('<iframe>')
                 .attr('id', 'download-iframe')
                 .appendTo('body');
           }
           $iframe.contents().find('html').html(data);
        }
     }
});

该请求的响应标头如下所示:

Content-Disposition:attachment; filename="PDF.pdf"
Content-Length:86712
Content-Type:application/pdf;charset=UTF-8

这将在 iframe 中显示原始数据,但不会启动下载。

无论如何,A)(首选)通过设置 DOM 元素 src 以不同的方式设置请求标头或 B) 启动下载对话框。

B) 启动下载对话框。

blob URI + <a download ...> + 合成单击事件可能会起作用