我有一个GET
api端点来下载CSV文件:
GET /api/v1/reports/report.csv
start_date
和end_date
api-key
。 因此,我可以使用邮递员通过标头中的api键发送GET
请求以下载文件。
现在网站上有一个表格。用户可以输入start_date
和end_date
,然后按Download
(提交)按钮。
我的问题是,如何在请求的标题中插入api-key
?
答案 0 :(得分:0)
最好的方法是使您的API更适合浏览器,并在get-parameter或cookie中传递api-key。
其他选项是通过ajax下载文件(这不会显示下载进度等),将需要隐藏的锚元素:
<a id="stubAnchor" style="display: none"></a>
和js:
var req = new XMLHttpRequest();
req.open("GET", "/api/v1/reports/report.csv", true);
req.responseType = "blob";
req.setRequestHeader('Api-key', 'some_key')
req.onload = function (event) {
var blob = req.response;
var fileName = "report.csv";
var contentType = req.getResponseHeader("content-type");
if (window.navigator.msSaveOrOpenBlob) {
// IE
window.navigator.msSaveOrOpenBlob(new Blob([blob], {type: contentType}), fileName);
} else {
var el = document.getElementById("stubAnchor");
el.href = window.URL.createObjectURL(blob);
el.download = fileName;
el.click();
}
};
req.send();