【问题标题】:IBM DataPower - How to handle HTML Response from openurl?IBM DataPower - 如何处理来自 openurl 的 HTML 响应?
【发布时间】:2018-04-25 19:37:03
【问题描述】:

我尝试在论坛中寻找解决方案,但我无法找到与我想要实现的目标类似的东西。我在 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 的经验,我刚开始学习,所以我可能对许多概念并不熟悉。 提前致谢!

【问题讨论】:

    标签: post request response urlopen ibm-datapower


    【解决方案1】:

    session.INPUT.readAsJSON() 表示您正在接收 JSON 数据作为输入(来自 POST)。

    由于您是在多协议网关 (MPGW) 中构建它,如果响应是 HTML 并且没有进行后端调用(url-open() 除外),则需要将响应类型设置为 non-xml您还必须设置 skip-backside=1 变量。

    场景是否为:

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

    或者:

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

    如果没有后端调用,我建议在 XML 防火墙 (XMLFW) 服务中构建它,并将其设置为“loopback”和non-xml

    如果有后端并且您从url-open() 发送HTML,则只需将MPGW 响应类型设置为non-xml

    如果是第二个选项,您可以在 GWS 中设置有效负载和标头,然后将目标 (https://************.com/e32d32der2tj90g8h4) 调用为 MPGW 后端连接,不需要 url-open()。

    【讨论】:

      猜你喜欢
      • 2021-03-30
      • 2011-08-22
      • 2020-04-05
      • 2019-08-31
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      相关资源
      最近更新 更多