2017-09-03 15 views
0

プロキシサーバーを使用してhttpsリクエストを送信しています。私はプロキシサーバー(宛先サーバーに渡されていない)だけで特定の情報を前後に渡したいと思っています。これはHTTP要求を行うときに要求ヘッダーで簡単に行うことができますが、HTTPS要求の場合、ヘッダーは暗号化されているため、要求ヘッダーはオプションではありません。 HTTPSを使用しているとき、私のプロキシサーバーは、次のオプションが用意されていますNode.js - HTTPS経由でリクエストするときにプロキシサーバーとだけ通信する

暗号化されていないデータがプロキシサーバ に送信された唯一のポイントは、最初のCONNECTメソッドです。ここには、 のカスタムヘッダーを挿入する必要があります。同様に、プロキシサーバーは、最後の応答に余分な ヘッダーを挿入できません。

HTTP/1.1 200コネクション確立
X-のProxyServer-IP:代わりに、応答ヘッダは ようにこれを見える接続応答、直後注入 ある123.456.789.000
最終応答ヘッダ&本体

したがって、私はCONNECTメソッドでヘッダーを渡し、CONNECT応答を読み取る必要があります。 https-proxy-agentモジュールでは、CONNECTリクエストで特にヘッダーを指定できるようになります。しかし、意図した要求(POSTなど)をまだ完了しているときに、CONNECT応答を読み取るにはどうすればよいですか?

requestモジュールまたはhttpsモジュールを使用してCONNECT応答を傍受する方法を理解できません。

答えて

0

私がテストしているhttps

const https = require('https'); 
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; 
var server = https.createServer(function(req,res){res.end('test');}).listen(3000); 

場合console.log(server._events)

{ connection: [ [Function], [Function] ], 
    secureConnection: [ [Function: connectionListener], [Function] ], 
    request: [Function], 
    tlsClientError: [ [Function: addListener], [Function] ] } 

ので、追加した後、以下:curl -X CONNECT localhost:3000

server.on('connection',function(req,socket,head){console.log('CONNECT')}) 
server.on('secureConnection',function(req,socket,head){console.log('CONNECT (secure)')}) 
server.on('tlsClientError',function(req,socket,head){console.log('TLS:ERROR')}) 

は、私がテストしました curl: (52) Empty reply from server

...しかし、サーバー@:この速いテストでクライアントの出力

CONNECT 
TLS:ERROR 

あなたはそのがCONNECTを傍受見ることができるように(それが原因テストにTLSエラーがあっても汝あなたは(作業)の設定でこれを行う場合のenv。)、

は、だから、TLS:ERROR


せずにインターセプト、それをすることができるようになります0

httpとしたいと思っている人のために、イベントは異なっています:server.on('connect', ...

+0

私はあなたに私の質問を誤解したと思います。私はプロキシサーバーを制御しません。私はクライアントであり、(ノードを使用して)HTTPS経由でリクエストを送信しようとしていますが、リクエスト応答を取得する前にCONNECTレスポンスをインターセプトします。 – Joel

関連する問題