Javascript 如何避免从ExpressJS抛出400个错误
背景:我从我网站上的一个格式错误的cookie(来自我的一个附属页面)中收到400个错误(以及一个空白的400页响应)。我已经编写了删除cookie的代码,但是我的一些客户仍然会收到错误,因为它在他们的缓存中。一旦他们清除缓存,问题就解决了 在我的.NET代码库中,只要忽略一个400错误,就可以避免这个问题,我希望在ExpressJS中也这样做 询问:我想让express忽略400错误上的所有cookie(通常由有缺陷的cookie引起),或者至少一起忽略错误。有没有办法做到这一点 我的ClearDefectiveCookies功能供参考(功能正常) 有问题的Cookie供参考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
名称:
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();
};