我目前正在为Node.js开发某种Web代理,但是在提交表单时遇到了麻烦,在大多数站点上我都能够成功提交表单,但是在其他一些站点上我却不太幸运。我无法确定我做错了什么。

有没有可能更好的方法呢?

另外,如何使用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);


}

最佳答案

我不确定您到底想完成什么,但是无论如何还是建议使用https://github.com/felixge/node-formidable

10-01 08:39
查看更多