我有一个附件的URL列表,想一键下载。我已将网址加载为JavaScript中的数组。然后,我使用XMLHttpRequest来获取文件内容。但是,发送到Circuitsandbox(然后再发送到Circuit以提高生产效率)时,标题或身份验证似乎不正确,尽管该URL可以在浏览器上下载,但我始终会收到错误401或404。
所以我的问题是我应该为请求使用什么标头/身份验证?
这是我的示例:
var auth = user + ':' + password;
var hash = Base64.encode(auth);
...
xhr.setRequestHeader("Authorization", "Basic " + hash );
我应该在这里使用我的用户(电子邮件)和密码作为Circuitsandbox吗?
非常感谢您提供任何提示。
答案 0 :(得分:0)
用于下载附件的Circuit文件api不支持基本身份验证。由于您是在已经具有会话的浏览器中运行此程序,因此只需将xhr.withCredentials设置为true。这将使用您当前会话的cookie。参见https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials
我刚刚创建了一个示例jsbin,用于下载帖子的附件。只需输入帖子的itemId。右键单击Circuit Web客户端上的帖子中的时间戳时,您可以看到itemId。
https://output.jsbin.com/napenuy
client.getItemById(itemId.value)
.then(item => {
console.log('Attachments:', item.attachments);
item.attachments.forEach(file => {
const xhr = new XMLHttpRequest();
xhr.open('GET', file.url, true);
xhr.withCredentials = true;
xhr.onload = function(e) {
if (this.status == 200) {
result.innerHTML += `<br>${file.fileName}:<br>${this.responseText}`;
}
}
xhr.send();
})
})
.catch(console.error);