ファイルの内容を返すサーバーへの$ http.post()呼び出しを行うng-click実装があります。したがって、ファイルのダウンロードはブラウザで行われます。ダウンロード後の新しいセッション - 角度js - 内部休憩コール
$scope.downloadFile = function(mediaObj) {
var downloadReq = {
"cid": $cId,
"pid":$pId,
"mid":$mId
};
$http.post(<server url>, downloadReq)
.then(function(response) {
var downloadUrl = URL.createObjectURL(new Blob([response.data]));
var a = document.createElement('a');
a.href = downloadUrl;
a.target = '_blank';
a.download = response.headers('Content-Disposition').split(';')[1].trim().split('=')[1];
document.body.appendChild(a);
a.click();
a.remove();
}, function(response) {
//unable to download
$scope.downloadErr = true;
});
}
サーバー側のコードスニペットは、このようなものです::この後
public void handleDownloadRequest(String json, HttpServletRequest request, HttpServletResponse httpServletResponse) {
....
// make rest call to another microservice to get file content
IOUtils.copyLarge(new ByteArrayInputStream((byte[])response.getBody()), httpServletResponse.getOutputStream());
// copy all headers from rest call response to httpServletResponse
httpServletResponse.flushBuffer();
}
、サーバーへの次の呼び出しは、(それは、他のサーバのコールを自分自身をダウンロードする必要はありません)されて、以下のコードスニペットです新しいセッションを開始する古いセッションは破棄されました。
このため、サーバー側クライアントセッションの状態が失われ、クライアントでの作業がうまくいきません。
誰でも、ダウンロード操作後に新しいセッションが作成される理由を理解できますか?私はこれを避けることができますか?なぜ古いセッションが破壊されていますか?
ありがとうございます。