javascript - 如何使用 getAllResponseHeaders 方法创建一个 JSON 对象

标签 javascript json google-chrome google-chrome-extension xmlhttprequest

我目前正在编写一个 google chrome 扩展程序,我需要找出有关网站响应 header 的信息。为此,我使用了 getAllResponseHeaders 方法,但我需要将它放在一个 JSON 对象中。不幸的是,我不断收到错误消息 SyntaxError: Unexpected token D in JSON at position 0 at main

这是我目前使用的代码:

xmlhttp.open("GET", url, false);
xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        allResponseHeaders = xmlhttp.getAllResponseHeaders();
    }
};
xmlhttp.send();

var responseHeaders = JSON.parse(allResponseHeaders);
obj.headers = responseHeaders;

当我在 allResponseHeaders = xmlhttp.getAllResponseHeaders(); 调用后立即发出警报时,警报显示调用成功;响应 header 已全部检索。第一个响应 header 是日期,我认为这与我的错误消息的 Unexpected token D 部分有关,但我不知道为什么它无法正确解析。我该如何解决?提前致谢。

编辑:我希望我的 JSON 对象看起来像这样:

{
  "headers": {
    "Date": "June 20, 2016",
    "Content-Type": "charset=UTF/8",
    ...
  }
}

最佳答案

参见 https://msdn.microsoft.com/en-us/library/ms536428(v=vs.85).aspx .返回 header 是一个 crlf 分隔字符串,其中每行包含由冒号分隔的键值。您可能需要调整下面的代码以解决空白问题。

var arr = allResponseHeaders.split('\r\n');
var headers = arr.reduce(function (acc, current, i){
      var parts = current.split(': ');
      acc[parts[0]] = parts[1];
      return acc;
}, {});

关于javascript - 如何使用 getAllResponseHeaders 方法创建一个 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37924305/

相关文章:

java - 如果领先的驼峰式单词只有一个字母长,为什么 Jackson 2 不能识别第一个大写字母?

json - json字符串未解析

JavaScript Ajax (jQuery.post) 异常错误 : state = "rejected"

javascript - jQuery slider 在 Chrome 中表现得很奇怪(+其他问题)

javascript - Grails 刷新谷歌图表

javascript - Django 根据其他字段动态设置字段值

javascript 循环思想 bootstrap

android - 以 WebAPK 格式制作 PWA 的要求

javascript - 如何在提交事件中获得formaction?

javascript - 所选元素具有相同的值但不同的 id