Node.js - URL的输入验证

时间:2017-04-17 06:30:34

标签: javascript node.js http

我目前正在使用节点模块'请求'创建一个作业队列,从用户输入的URL中提取HTML数据。到目前为止,这是我的代码:

var jobQueue = [];

function processNextJob() {
    if (jobQueue.length < 1) {
        console.log("No jobs to complete");
    }
    else {
        var job = jobQueue[0];
        request(job.target , function (error, response, body) {
            console.log(body);    
        });
        jobQueue.shift();
    }
}

如果我输入&#34; http://www.google.com&#34;或&#34; http://facebook.com&#34;,但如果我只输入&#34; google.com&#34;或&#34; twitter.com&#34;。 对于用户在表单中键入的任何有效链接发出http请求,最好的方法是什么?例如,我想让它在用户输入&#34; google.com&#34;或者&#34; www.google.com&#34;没有&#34; http://在开头。

有什么想法吗?在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是检查网址的开头是否为“http://”,如果不是则为前缀。例如:

var prefix = 'http://';
if (s.substr(0, prefix.length) !== prefix) {
  s = prefix + s;
}

作为一个注释,我建议在输入字符串时格式化字符串,而不是在处理它们时。这样,如果在不同的函数中使用它们,则无法检查它们是否再次正确格式化。

Click here