Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何避免从ExpressJS抛出400个错误_Javascript_Express_Cookies_Session Cookies_Http Status Code 400 - Fatal编程技术网

Javascript 如何避免从ExpressJS抛出400个错误

Javascript 如何避免从ExpressJS抛出400个错误,javascript,express,cookies,session-cookies,http-status-code-400,Javascript,Express,Cookies,Session Cookies,Http Status Code 400,背景:我从我网站上的一个格式错误的cookie(来自我的一个附属页面)中收到400个错误(以及一个空白的400页响应)。我已经编写了删除cookie的代码,但是我的一些客户仍然会收到错误,因为它在他们的缓存中。一旦他们清除缓存,问题就解决了 在我的.NET代码库中,只要忽略一个400错误,就可以避免这个问题,我希望在ExpressJS中也这样做 询问:我想让express忽略400错误上的所有cookie(通常由有缺陷的cookie引起),或者至少一起忽略错误。有没有办法做到这一点 我的Clea

背景:我从我网站上的一个格式错误的cookie(来自我的一个附属页面)中收到400个错误(以及一个空白的400页响应)。我已经编写了删除cookie的代码,但是我的一些客户仍然会收到错误,因为它在他们的缓存中。一旦他们清除缓存,问题就解决了

在我的.NET代码库中,只要忽略一个400错误,就可以避免这个问题,我希望在ExpressJS中也这样做

询问:我想让express忽略400错误上的所有cookie(通常由有缺陷的cookie引起),或者至少一起忽略错误。有没有办法做到这一点

我的ClearDefectiveCookies功能供参考(功能正常)

有问题的Cookie供参考


名称:
xyz_123
和值:
=NaN=xyz=123
问题可能在于如何调用
res.clearCookie
。如果你看报纸,上面写着:

只有在给定的选项与
res.cookie()
的选项相同时,Web浏览器和其他兼容客户端才会清除cookie,expires和maxAge除外


因此,为了清除cookie,您必须提供第二个参数作为对象,提供路径。

因此,答案实际上是node在2018年11月发生了突破性的更改,问题不是cookie,而是node的最大cookie大小导致了400个错误。这实际上不是快递


请参见此处的答案:

Hey Shimon,thx获取响应。它确实可以正常工作,并且可以正确地清除cookie。但是,中间件似乎可以在抛出400错误之前完成这项工作。我不知道如何让它一起忽略400个错误,因为我的代码成功地删除了损坏的cookie
const clearDefectiveCookies = (req, res, next) => {
  const cookies = req.cookies;
  const defectiveCookies = Object.keys(cookies).filter(key => typeof cookies[key] === 'string' && (cookies[key].charAt(0) === '='));

  if (defectiveCookies.length > 0) {
    defectiveCookies.forEach(defectiveCookie => {
      res.clearCookie(defectiveCookie);
    });
  }

  next();
};