노드 JS POST 요청(인증서 및 프록시 구성 포함)
1925 단어 proxycertificatesjavascriptnode
인증서를 사용하여 에이전트에서 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을 사용하여 요청을 트리거해도 문제가 없습니다.자네가 좀 도와줄 수 있겠나?아마도 다른 라이브러리를 사용해서 이 복잡한 요구를 제기할 것을 건의할 수 있을 것입니다.
감사합니다,
플라비유
Reference
이 문제에 관하여(노드 JS POST 요청(인증서 및 프록시 구성 포함)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rapmazzter/node-js-post-request-including-certificates-and-proxy-configuration-1jml텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)