2012-09-14 19 views
3

我想通過創建一個net.socket的HTTP 1.0請求或http.request,但我有這個代碼的問題:如何通過net.socket或http.request創建HTTP-1.0請求?

var http = require('http'); 

var options = { 
    host:'google.com', 
    method: 'CONNECT', 
    path: 'google.com:80', 
    port: 80 
}; 

var req = http.request(options); 
req.end(); 

req.on('connect', function(res, socket, head) { 
    socket.write('GET/HTTP/1.0\r\n' + 
       'Host: google.com:80\r\n' + 
       '\r\n'); 
socket.on('data', function(chunk) { 
    console.log(chunk); 
}); 
socket.end(); 
}); 

我得到同樣的錯誤:

events.js:66 
     throw arguments[1]; // Unhandled 'error' event 
       ^
Error: Parse Error 
    at Socket.socketOnData (http.js:1366:r20) 
    at TCP.onread (net.js:403:27) 

您的幫助歡迎。

+0

爲什麼你想手動編寫的http請求!?!? – billy

+1

,因爲我想創建http版本1.0不是1.1,你知道一個方法來設置http.request的請求版本? – thename

+0

抱歉,從未去過那裏。 – billy

回答

1

http.request總是使用HTTP/1.1,它在源代碼中被硬編碼。

下面是使用普通的TCP流發送HTTP/1.0請求的代碼(通過net.connect):

var net = require('net'); 

var opts = { 
    host: 'google.com', 
    port: 80 
} 

var socket = net.connect(opts, function() { 
    socket.end('GET/HTTP/1.0\r\n' + 
      'Host: google.com\r\n' + 
       '\r\n'); 
}); 

socket.on('data', function(chunk) { 
    console.log(chunk.toString()); 
});