2011-10-21 75 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