0

ユーザーがそれをクリックすると contentUrl があり、ファイルをダウンロードする必要があります。ブラウザーで contentUrl を参照しようとすると、ユーザー ID とパスワードを要求されます。これは基本認証だと思います。ユーザーにユーザー ID とパスワードを入力させたくないので、承認を渡します (以下のコードを参照してください)。URL は次のようになります: 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 は Download と同等ですか? そうでない場合、どのようにコーディングすればよいですか?基本的に私の要件は、リンクをクリックすると添付ファイルがダウンロードされることです。

PostMan の実行

4

1 に答える 1

0

withCredentials: 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));
于 2019-01-02T14:05:00.497 に答える