c# - 1fichier.com 的 HTTP 基本身份验证
问题描述
我正在尝试使用 1fichier.com 的基本身份验证直接下载一些文件,这在浏览器“https://email:password@1fichier.com/?file_ID&auth=1”中完美运行,但我正在尝试做同样的事情我的应用程序没有任何工作...我尝试使用纯电子邮件和密码的请求标头,我尝试使用 base64 编码的电子邮件和密码的标头,我尝试使用我的凭据发送 Post 请求,但我总是收到 401 错误:未经授权。有人知道如何将我的 http 请求中的身份验证发送到 1fichier 服务器吗?
这是他们在帮助页面中提供的内容:
登录后,高级会员可以下载无限数量的文件,没有限制。!!!您必须登录才能被识别为高级版!!!
您也可以使用“基本身份验证”直接下载:https://email:password@1fichier.com/?file_ID 提示:将 &auth=1 添加到 URL。服务器将要求进行身份验证。电子邮件地址的“@”在此协议下无效,您必须改用“%”。
wget 示例: wget '下载链接' --no-check-certificate --http-user='email' --http-password='password' --auth-no-challenge --content-disposition
using UnityEngine.Networking;
string user = "my email";
string password = "my password";
string combined = user + ":" + password;
UnityWebRequest request = UnityWebRequest.Get("https://1fichier.com/?cs6czd22c8odod74dal2&auth=1");
request.SetRequestHeader("Authorization","Basic " + combined);
yield return request.SendWebRequest();
if(request.isHttpError)
{
Debug.Log(request.error);
}
else
{
if (request.isDone)
{
Debug.Log("Done");
}
}
base64编码:
using UnityEngine.Networking;
string user = "my email";
string password = "my password";
string base64User = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(user));
string base64pass = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(password));
string combined = base64User + ":" + base64pass;
UnityWebRequest request = UnityWebRequest.Get("https://1fichier.com/?cs6czd22c8odod74dal2&auth=1");
request.SetRequestHeader("Authorization","Basic " + combined);
yield return request.SendWebRequest();
if(request.isHttpError)
{
Debug.Log(request.error);
}
else
{
if (request.isDone)
{
Debug.Log("Done");
}
}
解决方案
我找到了我要找的东西,它与请求标头没有任何关系;
我在浏览器中粘贴的原始网址是这样的:“https://myemail@gmail.com:mypassword@1fichier.com/?File_ID&auth=1”;
所以我记录了浏览器的网络请求,并且 url 如下所示:“https://myemail%40gmail.com:mypassword@1fichier.com/?File_ID&auth=1”;
我将它作为 url 粘贴到我的应用程序中的 get 请求中,它运行良好。
using UnityEngine.Networking;
UnityWebRequest request = UnityWebRequest.Get("https://myemail%40gmail.com:mypassword@1fichier.com/?File_ID&auth=1");
推荐阅读
- c# - C#插入Access数据库不工作并且没有异常或错误
- mongodb - 在 java spring boot 中使用 MongoDB $arrayToObject 和 $map 运算符
- reactjs - reactjs 中 ngClass.xs 或 md 的相关代码
- javascript - TypeError: (0 , _css.default) 不是函数
- c++ - C++ 非公共助手类和内联代码
- javascript - 我应该如何从正确编码的 GraalJS 脚本引擎获取脚本输出?
- .net - 找不到框架“Microsoft.AspNetCore.App”,版本“3.1.3”
- azure-devops - Azure Pipelines:等待触发的管道完成(Chain Builds Awaiter)
- javascript - 根据键值合并对象数组
- c++ - 如何解决 XCode 中的 C++ 模板链接错误?