通过MediaWiki Action API获取的Wikimedia CSRF Token提示invalid问题求助
- 处理CSRF Token的转义问题:你拿到的JSON响应中CSRF Token末尾的
\\是JSON转义字符,实际有效的Token末尾是单个反斜杠\,不要直接使用未处理的JSON原始字符串,也不要误删末尾的反斜杠。Dart中直接通过jsonDecode解析后取的csrftoken字段值就是正确转义后的内容,不要手动截取或者修改字符串。 - 保证两次请求的身份上下文完全一致:获取CSRF Token和校验Token的两次请求,必须携带完全相同的OAuth2 Authorization请求头,不要修改或者漏传认证前缀。如果你的请求逻辑中默认携带了其他Cookie,需要清空Cookie后再发起请求,MediaWiki会优先使用Cookie中的身份信息进行校验,和OAuth2身份不一致时会直接返回Token无效。
- 校验请求的参数格式必须符合要求:发往MediaWiki API的POST请求必须使用
application/x-www-form-urlencoded格式传参,不要使用JSON格式或者multipart/form-data格式(上传文件的请求除外)。校验请求的参数名必须为token,不要写成csrftoken等其他名称。 - 确认请求域名一致:获取和校验CSRF Token必须在同一个Wiki站点域名下进行,你当前使用的commons.wikimedia.org是一致的,后续上传操作也要保证在同个域名下发起请求。
内容的提问来源于stack exchange,提问作者underwhelmingToaster
相关产品推荐
相关产品推荐

