javascript - 在以 JSON 格式导入 MongoDB 之前清理 HTTP 响应 header 中的非法字符

标签 javascript regex node.js http request

在使用 Node.js 请求 HTTP 响应并将其导入 MongoDB 时,我注意到一两个 URL 的 header 包含非法字符(因为它们正在使用 key ),这会在我尝试导入时使整个脚本崩溃MongoDB。示例如下:

{
  "url": "divensurf.com",
  "statusCode": 200,
  "headers": {
    "x-varnish": "2236710953 2236710300",
    "vary": "Accept-Encoding,Cookie,X-UA-Device",
    "cache-control": "max-age=7200, must-revalidate",
    "x-cache": "V1HIT 2",
    "content-type": "text/html; charset=UTF-8",
    "page.ly": "v4.0",
    "x-pingback": "http://divensurf.com/xmlrpc.php",
    "date": "Thu, 21 Mar 2013 19:40:59 GMT",
    "transfer-encoding": "chunked",
    "via": "1.1 varnish",
    "connection": "keep-alive",
    "last-modified": "Thu, 21 Mar 2013 19:40:57 GMT",
    "age": "2"
  }
}

header /键 "page.ly" 会使脚本崩溃,因为它包含非法字符 .。在我将此文档导入 MongoDB 之前,是否有任何方法可以通过删除这些非法字符来清理包含在引号中的 key / header ?

下面是我请求响应的代码:

(function (i){
            http.get(options, function(res) {

                var obj = {};
                obj.url = hostNames[i];
                obj.statusCode = res.statusCode;
                obj.headers = res.headers;

                db.scrape.save(obj); // imports headers into MongoDB

            }).on('error',function(e){
        console.log("Error: " + hostNames[i] + "\n" + e.stack); // prints error stack onto console
        })
    })(i);

例如从"page.ly""pagely"

编辑:已解决。检查 Gael 的答案。

最佳答案

obj.headers={}; 
for(var item in res.headers){ 
    obj.headers[ item.replace(/\./,'')] = res.headers[item]; 
}

关于javascript - 在以 JSON 格式导入 MongoDB 之前清理 HTTP 响应 header 中的非法字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15556841/

相关文章:

c# - 动态构建的正则表达式运行速度极慢!

python - 找出段落中出现的单词

javascript - Mongodb 返回填充对象但保存清空一些字段

node.js - 尝试在Cipher.update中以不受支持的状态添加数据

javascript - 如果单元格具有特定值,如何激活脚本

javascript - 在 chrome.storage 中正确存储对象?

javascript - 如何将 twitter-bootstrap cdn 回退到本地副本

javascript - 如何检查这些字符串中的任何一个是否存在于另一个字符串中,如果在 JavaScript 中答案为是,如何替换它?

javascript - 只匹配内部 HTML?

mysql - 在promise-mysql中记录SQL执行的查询