[axios]Http 代理附加在实际 URL 前面 | 请求失败,状态码 503

2024-02-21 848 views
1

你好,

我正在使用 axios 来获取 Api http://xxxxxxxxxxxxxxxxxx.com/actuator/health之一的响应,我成功地能够从我的 React 客户端代码中获取其值,但是当我在服务器上为此设置快速端点时侧并从浏览器调用下面的端点

app.get('/health', function (req, res) {
var url = serviceUrl + '/actuator/health';
axios.get(url)
    .then((response) => {
      const data = response.data;
      console.log(data);
      res.json(data);
    })
    .catch((err) => {
      console.log(err);
    })
});

然后我收到以下错误

错误:请求失败,状态代码 503

statusText:“DNS 失败”,主机:“proxy-gcp-central.xxxx.com”,responseUrl:“ http://proxy-gcp-central.xxxx.com/http://xxxxxxxxxxxxxxxxxx.com/actuator/health ” , _currentUrl: ' http://proxy-gcp-central.xxxx.com/http://xxxxxxxxxxxxxxxxxx.com/actuator/health '

其中 http://proxy-gcp-central.xxxx.com/ 附加在实际 url => 前面,因此失败

我在云环境中遇到此问题,我可以通过在上面的 axios.get 函数中提供代理信息和 url 来解决本地问题(如在本地我使用代理服务器访问此 URL),但在云上我们可以直接访问它,而无需使用代理服务器,因此对于云,我们无法在此代码中设置此代理信息。

我已经尝试过许多其他节点模块,如 http、request、request-promise,但仍然遇到同样的问题。

我还尝试Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers在 headers 和 app.use 中进行设置,但都没有解决我的问题。

语境
  • axios版本:例如:v0.17.1
  • 环境:例如:node v8.11.3、npm v6.2.0、chrome 68.0.3440.106(官方版本)(64位)、windows 7

回答

9

使用 axios@0.18.0 遇到同样的问题

6

+1,同样的问题:(

0

有什么解决办法吗?

9

看起来 PR #2562 可能会解决这个问题。我遇到了类似的问题,并通过显式配置代理选项并将协议设置为 HTTPS 来解决它。

proxy: {
  host: 'localhost'
  port: 8080,
  protocol: 'https'
}

请查看 PR #3070 了解更多信息。

1

图像 为了代理 https url,应使用 http 隧道(CONNECT 方法)。axios 当前使用什么:修改 urlproxy + url可能有 bug

我的情况: https: //github.com/jeffijoe/typesync/blob/81a10e96a73a2948950513892318cc4e23ffe99c/src/type-definition-source.ts#L4 https://github.com/jeffijoe/typesync/blob/81a10e96a73a2948950513892318cc4e 23ffe99c/src/类型-定义源.ts#L16

process.env.http_proxy enabled图像 图像

NO_PROXY 帮助可以提供帮助

# fish
set -x NO_PROXY 'typespublisher.blob.core.windows.net'
1

参见#4209