Lotus Notes / Domino - Как получить Content-Range в приложении Angular - PullRequest
0 голосов
/ 14 октября 2019

Я создал приложение Angular и использую HttpClient для получения данных с сервера IBM / Notes Domino. Я использую Domino Data Services для доступа к данным в базе данных с таким URL-адресом, как этот /{database}/api/data/collections/name/{viewname}. Данные возвращаются с сервера просто отлично, я вижу это, используя вкладку Chrome DevTools Network.

В ответе от сервера я вижу заголовок Content-Range, но в моем приложении Angular я не могу получить доступэто!

В приложении Angular я использую это для наблюдения за ответом от сервера

this.httpClient.get<any>('/{database}/api/data/collections/name/{viewname}', {observe: 'response'})
    .subscribe(
        resp => {
        console.log(resp);
        }
    );

В консоли я вижу это для заголовков: headers: Map(3) {"content-type" => Array(1), "cache-control" => Array(1), "content-length" => Array(1)}

Я добавил Access-Control-Allow-Headers в пользовательские заголовки в правиле веб-сайта Domino со значением Content-Range.

Кто-нибудь знает, как мне добраться до заголовка Content-Range в Angular?

Ответы [ 3 ]

2 голосов
/ 14 октября 2019

Так что с помощью других у меня есть ответ!

Чтобы помочь другим, вот решение, которому вы должны следовать, чтобы оно работало на сервере Domino.

В DominoДиректор, зайдите в Интернет -> Интернет-сайты. В документе «Правило веб-сайта» Правило (заголовки): введите в поля Custom headers следующее:

enter image description here Затем в файле Notes.ini длясерверу вам нужна следующая строка:

HTTPAdditionalRespHeader=HTTPAdditionalRespHeader=Access-Control-Allow-Credentials:true

Перезапустите сервер Domino и эй до того, как он заработает !!

1 голос
/ 14 октября 2019

Вам необходимо настроить свой бэкэнд на возврат HTTP-заголовка, Access-Control-Expose-Headers со значением Content-Range. Т.е. в полном объеме: Access-Control-Expose-Headers: Content-Range.

Затем в Angular вы можете извлечь заголовки, выполнив .headers.get():

Например,

this.httpClient.get<any>('/{database}/api/data/collections/name/{viewname}', {observe: 'response'})
    .subscribe(
        resp => {
           console.log(resp);
           console.log(resp.headers.get('Content-Range'));
        }
    );
1 голос
/ 14 октября 2019

Похоже, вы не добавили Content-range в открытые заголовки на стороне сервера.

Может быть, вы можете попробовать это: [EnableCors("<a href="http://localhost:3000" rel="nofollow noreferrer">http://localhost:3000</a>", "<em>", "</em>", exposedHeaders: "Content-Range")]

...