当大厂问起项目是否支持域名重定向的时候,我是一脸懵逼的,302域名重定向那是啥玩意,问了公司运维,他们也不是很清楚,网上搜索,找到一篇nginx配置302的方法,来测试项目是否支持302域名重定向。
试了半天,终于配置成功,可以重定向的:
不太懂这些配置,只好一个一个试过来,试过另写一个server来写重定向,或在location下来写重定向,发现都不行,都不能返回302。这些先记下来,防止下次再跳进坑去。
可以返回302域名重定向了,就开始在Unity上测试。测试了3个方法,Unity自带的WWW和UnityWebRequest,以及HttpWebRequest是否支持302域名重定向(因为项目都用上了)。测试结果是都支持,尤其是HttpWebRequest,都不需要设置AllowAutoRedirect为true。
代码如下:
private static bool MyRemoteCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
bool isOk = true;
if (sslPolicyErrors != SslPolicyErrors.None)
{
for (int i = 0; i < chain.ChainStatus.Length; i++)
{
if (chain.ChainStatus[i].Status != X509ChainStatusFlags.RevocationStatusUnknown)
{
chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain;
chain.ChainPolicy.RevocationMode = X509RevocationMode.Online;
chain.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(0, 1, 0);
chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllFlags;
bool chainIsValid = chain.Build((X509Certificate2)certificate);
if (!chainIsValid)
{
isOk = false;
}
}
}
}
return isOk;
}
IEnumerator Start()
{
string url = "http://abc1.com/test.txt";
{
System.Net.ServicePointManager.ServerCertificateValidationCallback = MyRemoteCertificateValidationCallback;
var request = new UnityWebRequest(url, "POST");
request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
yield return request.SendWebRequest();
Debug.Log(request.url);
if (request.isHttpError || request.isNetworkError)
{
DebugUtility.SetMessage(request.error);
}
else
{
Debug.Log(request.downloadHandler.text);
}
}
{
WWW www = new WWW(url);
yield return www;
Debug.Log(www.text);
}
{
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
//httpWebRequest.AllowAutoRedirect = true;
Stream stream = httpWebRequest.GetResponse().GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
string result = reader.ReadLine();
Debug.Log(result);
stream.Close();
reader.Close();
yield return null;
}
}