【nodejs】服务器端抛出异常Error: bad content-type header, no content-type原因及解决办法

引出

最近写了个网站,然后放到服务器上之后没两天就开始时不时的抛出异常Error: bad content-type header, no content-typeunknow content-type: text/html,异常抛出后没有接收服务器就停止运行,即使我做了异常处理,但该异常依然会每天时不时的出现,甚至错误日志都被其刷屏。。

原因

被该异常搞得苦不堪言之后终于下定决心解决它,然而疯狂百度之后依旧一无所获,只能硬看代码硬改bug了

首先正常的浏览器客户端发送的请求都会有content-type,即使不显示添加浏览器也会根据内容为其添加,所以no content-type八成就是爬虫了,然后我输出res的请求头果然是百度爬虫。。。

即使客户端没有请求头属性content-type也不至于导致服务器抛出异常呀,以前写的网站也没有出现过这样的问题。。。

然后我用测试工具:Postman,逐个路由测试终于发现了问题:express-formidable模块

express-formidable模块是用于处理post请求的,当请求没有content-type属性或者content-type属性不是post请求指定类型时就会抛出Error: bad content-type header, no content-type和unknow content-type: text/html异常

解决方法

目前为止我也没有找到比较好的解决方法,我这里经常抛出该异常是因为我在根目录中引入了express-formidable模块处理请求,所以导致了只要有没带content-type属性的爬虫访问就会抛出异常

我的办法是将需要使用express-formidable模块的功能单独写一个路由,不要将其放置到根目录路由中,但是这样爬虫爬取单独写好的路由时还是会抛出no content-type,所以在该路由中再添加一个顶层中间键,判断一下是否有content-type属性,没有就手动为其添加(添加时要添加post请求的类型如application/x-www-form-urlencoded等否则会抛出unknow content-type: text/html)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

列队猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值