在javascript中打印来自nginx 405的HTML响应

时间:2017-10-18 18:59:37

标签: javascript json nginx

我有类似的东西

try{
    const url = 'clearlyfake';
    const response = await fetch(url);  
    //do stuff with response  
} catch(e){
    console.log(e);
}

当我在这个特定实例中遇到catch时,我得到一个nginx 405,这是HTML。当我进入网络选项卡并单击“响应”时,这就是显示的内容。

<html>
    <head><title>405 Not Allowed</title></head>
    <body bgcolor="white">
        <center><h1>405 Not Allowed</h1></center>
        <hr><center>nginx/1.13.5</center>
    </body>
</html>

我想将其填入我创建的错误栏中。但它不是JSON,我尝试的任何JSON解析方法都会给我SyntaxError: Unexpected token < in JSON at position 0

无论如何都要捕获并显示它?或者这是一个nginx配置问题吗?

1 个答案:

答案 0 :(得分:1)

HTML不是JSON,因此在HTML字符串上运行JSON.parse()会产生上述错误。

以下内容应该有效:

const response = await fetch(url);
var parser = new DOMParser();
var errorDoc = parse.parseFromString(response);

然后您有一个DOM节点,其中包含您的nginx错误文档的内容。因此,您可以通过调用errorDoc.getElementsByTagName(&#39; title&#39;)。innerHtml来读取它,将错误代码的名称作为字符串读出,或将整个节点附加到您的文档中。