【发布时间】:2019-12-27 20:19:43
【问题描述】:
我向本地安装在我的服务器上的 nextcloud 安装发出登录请求。 我传递了 3 个参数:requesttoken、password、shareToken。该请求在邮递员中运行良好,但在我的 C# 代码中失败。
我收到以下回复 带有 412 状态码。
"{\"消息\":\"CSRF检查失败\"}"
我复制粘贴了来自我的邮递员请求的 c# 代码,如下所示。有什么线索吗?
var client = new RestClient("https://nextcloud.xxxx.org/index.php/s/Sryt58drbe34/authenticate/showShare");
var request = new RestRequest(Method.POST);
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("undefined", "requesttoken=oq%2Fqo4Nx0eNvYyty5QNeJqPbjZxMCtn3bFvUfEi%2Fwcg%3D%3AlOWrxPECsptWMBwGnTYMQ%2FG3yPENe7iQQwz7EQOLmYA%3D&password=bb9AYoqWSmAxiCgvFusW&sharingToken=Sryt58drbe34", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
【问题讨论】:
-
cookie 怎么样?有吗?
-
使用像提琴手的wireshark这样的嗅探器。捕获来自邮递员的第一个请求并与来自 C# 代码的第一个请求进行比较。使 c# 请求看起来像邮递员。 c#请求中的默认headers与默认postman headers不同。
-
您是否将令牌放入 x-www-form-urlencoded 内容类型中?如果是这样,您必须将“未定义”替换为“application/x-www-form-urlencoded”