当用户单击该内容时,我有一个contentUrl,应下载文件。 如果我尝试在浏览器中浏览contentUrl,则要求输入用户名和密码。我认为这是基本身份验证。我不希望用户输入用户名和密码,因此我将其传递给Authorization(请参见下面的代码)。 网址看起来像这样: http://XXX.XXX.XX.XXX:8080/flowable-rest/service/runtime/tasks/90875/attachments/90555/content
let username : string = 'admin';
let pwd : string = 'test';
let headers = new Headers();
headers.set('Accept', 'text/json');
headers.append('Content-Type', 'application/json');
headers.set('Access-Control-Allow-Origin', '*');
headers.set('Access-Control-Allow-Methods','POST, GET, OPTIONS, PUT, DELETE');
headers.set('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
headers.append("Authorization", "Basic " + btoa(username + ":" + pwd));
return this.http.get(url, { headers: headers })
.pipe(map(r => {
console.log(r);
})).pipe(catchError(this.handleError));
我不确定100%是否适合我的要求。
我在PostMan中尝试了contentUrl。在PostMan右下角出现了“下载”按钮,并要求我下载。下面是它说的消息
此响应无法预览。下载响应以使用适当的应用程序将其打开。
如果我单击“下载”,则附件将被下载。
从语法上讲,http.get等同于下载吗?如果没有,我应该如何编码?基本上,我的要求是是否应该单击链接附件。
答案 0 :(得分:0)
尝试使用凭据设置:true。
即
// let username : string = 'admin'; //don't do this
// let pwd : string = 'test'; //don't do this
const headerJson = {
'Content-Type': 'application/json'
};
const headers = new HttpHeaders(headerJson);
return this.http.get(url, { headers: headers, withCredentials: true })
.pipe(map(r => {
console.log(r);
})).pipe(catchError(this.handleError));