问题概述

在 Chevereto 登录账号后再执行 "注销" 操作的时候会显示:

  • 您没有权限访问此网页或链接已过期.

使用 EN 语言的显示是:

  • You either don't have permission to access this page or the link has expired.

您没有权限访问此网页或链接已过期.

问题原因

Chevereto 的注销是使用 URL 查询参数请求的, 在向服务器请求注销的时候会访问一条类似如下的 URL:

  • https://www.domain.com/logout/?auth_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

如果此时使用了边缘节点缓存, 大多数的 CDN 提供商为了提高缓存效率都会启用 "查询参数不跟随", 如果是这样的话, 这条请求会首先通过边缘节点服务器过滤掉了查询参数, 传入服务器的时候就丢掉了后面的 token, 服务器并没有收到正确的注销请求, 于是传出了没有查询参数的响应, 于是此时出现了没有权限访问.

解决办法

既然已经知道了问题原因, 那么在为 Chevereto 启用 CDN 的时候就要注意 "参数跟随" 问题, 以下以 Cloudflare 为例:

相关设置路径位于:

域名 - 缓存 - 配置 - 缓存级别

缓存级别

需要将此处的配置改为 "标准", 即为不忽略查询参数.

修改成功后需要等待至少 30 分钟左右, 规则才会生效, 随后完全清空浏览器缓存再尝试登录后注销即可正常注销.

其他

在遇到这个问题的时候我还注意到 CSDN 上有人描述了不同的问题原因:

  • 服务器没有正确处理 session.

如果你在尝试 CX 的解决办法之后依旧没有改善, 那么建议通过这篇文章自检问题.

文章参见 CSDN:

Chevereto 无法登录显示[请求被拒绝,您或者没有权限访问此页面]的解决办法_isinstance的博客-CSDN博客