Неправильный TLS с RESTDataSource от Apollo и HttpsProxyAgent - PullRequest
0 голосов
/ 05 апреля 2019

Я устанавливаю связь между моим сервером Apollo (Node) и REST API.Моя конечная точка https://app.myproject.local/api/v1 и обслуживается через отель через Pacfile, доступный с http://localhost:2000/proxy.pac.

В действительности эта конечная точка также доступна с http://localhost:4000/api/v1, но я хочу получить к ней доступ через Hotel.

Я решил, что app.myproject.local не будет решено, если я попытаюсь получить к нему доступ непосредственно в приложении узла, поэтому мне нужно пройти через HttpsProxyAgent и получить его оттуда.

import { RESTDataSource } from 'apollo-datasource-rest'
import HttpsProxyAgent from 'https-proxy-agent'
import { restConfig } from '../config/restConfig'

export class RestAPI extends RESTDataSource {
  constructor() {
    super()
    this.baseURL = restConfig.endpoint
  }

  public willSendRequest(request: any) {
    request.agent = new HttpsProxyAgent({
      host: 'localhost',
      port: 2000,
      secureProxy: false,
      rejectUnauthorized: false,
    })
  }

  public async test() {
    return this.get('/status')
  }
}

Несмотря на наличие rejectUnauthorized выдает ошибку

(node:40593) UnhandledPromiseRejectionWarning: FetchError: request to https://app.myproject.local/api/v1/organizations/current failed, reason: write EPROTO 4474312128:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:332:

Когда я пытаюсь сделать такой же выборки с помощью cURL, это работает с

curl --insecure --proxy http://localhost:2000/proxy.pac https://app.myproject.local/api/v1/status

Это может быть недоразумением с моей стороны, но я подумалrejectUnauthorized позволит обойти проблему с сертификатом SSL.Я на самом деле использую это в среде разработки, так что это не имеет большого значения, в производстве мне не нужно проходить через все это.

Я использую документацию https://node.readthedocs.io/en/latest/api/tls/#tlsconnectport-host-options-callback дляпомогите мне передать аргументы HttpsProxyAgent

1 Ответ

0 голосов
/ 09 апреля 2019

proxy.pac - это файл, который сообщает веб-браузеру, какой прокси использовать для данного запроса.Обычно вы не используете его как прокси.

...