노드 JS POST 요청(인증서 및 프록시 구성 포함)

나는 해결할 수 없는 특수한 문제가 하나 있다.내 설정은 다음과 같습니다.
인증서를 사용하여 에이전트에서 POST 요청을 보내고 싶습니다.노드fetch나axios를 사용해서 이 점을 실현하려고 시도했지만,axios는POST 요청과proxys를 사용할 때 결함이 있습니다. 노드fetch에서는 에이전트나 인증서만 에이전트로 사용할 수 있고, 둘을 동시에 사용할 수 없습니다.현재 https 모듈의 노드를 사용하여 구축을 시도하고 다음 코드를 작성했습니다. (데이터는 가상입니다.)
const body = {}

const data = JSON.stringify(body)

const options = {
    host: proxy.host,
    port: proxy.port,
    path: 'https://server:port/path',
    method: 'POST',
    headers: {
        'Proxy-Authorization': auth,
        'Accept': 'application/json',
        'content-type': 'application/json',
        'requestid': 'ec69aa5d-52d8-4849-8b95-6e360f472860',
        'testid': '9b8183ed-967c-4701-bfa4-dd8c0ec6bab1',
    },
    key: fs.readFileSync('certificates/client.key.pem'),
    cert: fs.readFileSync('certificates/client.cert.pem'),
    agent: false
}

const req = https.request(options, (res) => {
    console.log('statusCode:', res.statusCode);
    console.log('headers:', res.headers);

    res.on('data', (d) => {
        process.stdout.write(d);
    });
});

req.write(data, () => {
    console.log(req)
});
req.on('error', (e) => {
    console.error(e);
});

req.end();
하지만 그것도 소용없다.이 경우 다음 오류 때문에 인증서가 실제 URL이 아닌 에이전트에 사용되는 것을 발견했습니다.
Error: write EPROTO 4348:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:332:

    at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:92:16) {
  errno: 'EPROTO',
  code: 'EPROTO',
  syscall: 'write'
}
CURL을 사용하여 요청을 트리거해도 문제가 없습니다.
자네가 좀 도와줄 수 있겠나?아마도 다른 라이브러리를 사용해서 이 복잡한 요구를 제기할 것을 건의할 수 있을 것입니다.
감사합니다,
플라비유

좋은 웹페이지 즐겨찾기