Node.js:远程提交表单

时间:2011-10-21 07:11:48

标签: javascript forms node.js express

我目前正在为Node.js开发一种Web代理,但我在提交表单方面遇到了麻烦,在大多数网站上我都能成功提交表单,但在其他一些网站上我并不是那么幸运。我无法确定是否有任何我做错的事。

有没有更好的方法呢?

另外,我如何使用Express.js bodysarser处理多部分表单?

目前,我对表单处理的方式是:

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);

}

2 个答案:

答案 0 :(得分:0)

我不确定你到底想要完成什么,但https://github.com/felixge/node-formidable无论如何都是推荐!!

答案 1 :(得分:0)

我会从node-http-proxy开始。所有艰苦的工作都是为您完成的,您只需定义要代理的路由,并将一些处理程序放入自定义响应信息中。