IBM DataPower - Как обработать HTML-ответ от openurl? - PullRequest
0 голосов
/ 25 апреля 2018

Я пытался найти решение на форуме, но мне не удалось найти что-то похожее на то, чего я пытаюсь достичь.У меня есть сценарий шлюза в MPG, который выглядит примерно так:

session.INPUT.readAsJSON(function (error, json) {
    if (error){
            throw error;
    } else {
    var SAMLResponse = json['SAMLResponse'];
    var RelayState = json['RelayState'];
    var urlopen = require('urlopen');
    var options = {
                            target: 'https://************.com/e32d32der2tj90g8h4',
                            method: 'POST',
                            headers: { 'HEADER_NAME' : 'VALUE'},
                            contentType: 'application/json',
                            timeout: 60,
                            sslClientProfile: 'ClientProfile',
                            data: {"SAMLResponse": SAMLResponse, "RelayState": RelayState}
    };
    urlopen.open(options, function(error, response) {
      if (error) {
            session.output.write("urlopen error: "+JSON.stringify(error));
      } else {
            var responseStatusCode = response.statusCode;
            var responseReasonPhrase = response.reasonPhrase;

            response.readAsBuffer(function(error, responseData){
              if (error){
                    throw error;
              } else {
                    session.output.write(responseData);
                    console.log(responseData);
              }
            });
      }
    });
    }
});

Я делаю запрос POST, и ответ, который я получаю от функции urlopen, представляет собой страницу HTML, как мне отобразить содержимоеэтой страницы в моем браузере?Мне это нужно, чтобы начать процесс.я иду в неправильном направлении здесь?Каков наилучший способ POST для URI и отображения его ответа в DataPower?Что касается моего опыта работы с DataPower, я только начал изучать, поэтому я, возможно, не знаком со многими концепциями.Заранее спасибо!

1 Ответ

0 голосов
/ 22 мая 2018

session.INPUT.readAsJSON() будет означать, что вы получаете данные JSON в качестве входных данных (из POST).

Поскольку вы строите это в многопротокольном шлюзе (MPGW), вам необходимо установить тип ответав non-xml, если ответом является HTML и если не выполняется внутренний вызов (кроме url-open()), вы также должны установить переменную skip-backside=1.

Сценарий имеет вид:

JSON HTTP Request -> [MPGW] -> url-open() -> Backend server --| HTTP Response <-----------------------------------------|

Или:

JSON HTTP Request -> [MPGW] -> url-open() --| (skip-backside) HTTP Response <------------------------|

Если нет никакого внутреннего вызова, я бы рекомендовал вместо этого встроить его в службу XML Firewall (XMLFW) иустановите его в «loopback» и non-xml.

Если есть бэкэнд, и именно здесь вы отправляете свой HTML из url-open(), тогда только тип ответа MPGW должен быть установлен в non-xml.

Если это второй вариант, вы можете просто установить полезную нагрузку и заголовки в GWS и просто вызвать цель (https://************.com/e32d32der2tj90g8h4) как обратное соединение MPGW, нет необходимости в url-open ().

...