0

当用户点击它时,我有一个 contentUrl,应该下载文件。如果我尝试在浏览器中浏览 contentUrl,它会询问用户 ID 和密码。我相信这是基本身份验证。我不希望用户输入用户 ID 和密码,所以我通过它授权(请参阅下面的代码)。网址看起来像这样: 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 是否等同于下载?如果不是,我应该如何编码?基本上我的要求是如果我点击链接附件应该被下载。

邮递员执行

4

1 回答 1

0

尝试设置 withCredentials: true。

IE

// 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));
于 2019-01-02T14:05:00.497 回答