2011-10-21 113 views
0

我目前正在研究Node.js的一種Web代理,但我在提交表單時遇到問題,在大多數網站上我能夠成功提交表單,但是在其他一些網站上網站我不那麼幸運。我無法確定是否有什麼我做錯了。Node.js:遠程提交表格

有沒有更好的方法可以做到這一點?

此外,我將如何使用Express.js bodyparser處理多部分表單?

目前,這是我在表單處理的方式是這樣的:

function proxy(req, res,request) 
{ 

var sess = req.session; 

var onUrl_Parse = function(url){ 
     var Uri= new URI.URI(url);//Parses incoming url 
      var options = { 
       uri: url, 
       method: req.method 
      } 

       options.headers={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20110814 Firefox/6.0", "Cookie":req.session.cook}; 



     if(req.body) //If x-www-form-urlencoded is posted. 
     { 
      var options = { 
       uri: url, 
       method: req.method, 
       body: req.rawBody 
      } 
       options.headers={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20110814 Firefox/6.0", "Cookie":req.session.cook, "Content-Type":"application/x-www-form-urlencoded"}; 
     } 


    onRequestOptions(options, url); 
} 

,onRequestOptions = function(options, url) 
{  
    request(options, function(error, response, body) 
    {  
      if(!error){ 
        if(response.headers['set-cookie']) 
         req.session.cook=response.headers['set-cookie']; 
       Proxy_Parser.Parser(body, url, async, onParse);// Parses returned html return displayable content 
      } 

    }); 
} 

,onParse = function(HTML_BODY) 
    { 
     if(HTML_BODY=="") 
      res.end(); 
     res.write(HTML_BODY); 
     res.end(); 
     console.log("DONEEEEE"); 
    } 



Url_Parser.Url(req, URI, onUrl_Parse); 

}

回答

0

我不知道你要完成什麼,但https://github.com/felixge/node-formidable反正是推薦的 !!

+0

我不知道爲什麼我的答案已被投票。如果提到這個原因,這將是非常好的,這樣我就不會重蹈覆轍。 –

0

我會從node-http-proxy之類的東西開始。所有艱苦的工作都是爲你完成的,你可以定義你想要代理的路由並放入一些處理程序中以獲得自定義響應信息。

+0

這是否能夠處理對外部網站的請求? 如果有,有沒有例子? – Trevor

+0

是的,第二個示例*使用自定義服務器邏輯*設置獨立代理服務器。只要更改指向它的端口和URL即可。 – hross