如何解决Hapi.js因为第三方cookie导致的400错误?

网站使用百度统计的时候,如果访问了百度站长平台,等和百度有关的网站,那么可能会导致cookie里面被加入了一些重复或者不规范的cookie。

这时候,使用Hapi.js的网站就会报400错误的页面:

{"statusCode":400,"error":"Bad Request","message":"Invalid cookie value"}

如果出现这个问题,如何解决?

问题原因是Hapi.js对这种不规范的cookie做了严格的检验处理,解决的话,只要配置一下它的server的state选项ignoreErrors就好了。

server.connection({
  host: '0.0.0.0',
  port: port,
  state: {
    ignoreErrors: true
  },
});

这种方式会忽略请求里面有问题的cookie。

如果仍想接受这个有问题的cookie,那么可以用strictHeader选项。

const server = new Hapi.Server({
    host: '0.0.0.0',
    port: 3000,
    state: {
      strictHeader: false
    }
});