通过 ssh 服务器发送 http 请求

通过 ssh 服务器发送 http 请求

我的数据存储在 SSH 服务器上,我想通过 HTTP POST 和 GET 请求查询和检索数据。我一直尝试使用简单的 URL 来做到这一点http://127.0.0.1:9200/_search?但它给了我一个空的响应。通过 http 在 ssh 服务器上发送请求的正确方法是什么?我的 http post 函数如下所示:

function spatialsearch(coordinates_selected) {
  var coords = coordinates_selected.geometry.coordinates;
  console.log('c',JSON.stringify(coordinates_selected.geometry.coordinates));
  var _url = 'http://127.0.0.1:9200/_search?';

  var b = {
    "query": {
      "bool": {
        "must": {
          "match_all": {}
        },
        "filter": {
          "geo_shape": {
            "metadata.o2r.spatial.geometry": {
              "shape": {
                "type": "polygon",
                "coordinates":
                coords

                /* [
                //     [-22.0, 76.0],
                //     [-27.0, 65.0],
                //     [-57.0, 65.0],
                //     [-59.0, 76.0],
                //     [-22.0, 76.0]
                ]*/

              },
              "relation": "within"
            }}}}}
  };

  console.log(b,'http sending request');
  return $http.post(_url,b);
}

我尝试使用 ssh -L9201:sshserver:9200 r_chau02@sshserver 进行 SSH 隧道传输,但仍然没有收到任何响应。

更新 我将代码中的端口更新为 9201,但结果仍然相同。控制台中的错误是净::ERR_EMPTY_RESPONSE当终端生成通道 3:打开失败:连接失败:连接被拒绝

答案1

您看的方向正确,但有一个小错误。HTTP 请求和转发端口不匹配(9200 和 9201)。

您可以更新代码以在端口 9201 上查询,或者将 ssh 隧道更改为:

ssh -L9201:127.0.0.1:9200 r_chau02@sshserver

这将使 ES 在 localhost:9200 上可用(假设服务器上启用了隧道,并且 ES 正在监听 sshserver 地址)。

相关内容