遇到无效的重定向。缺少位置标题。团结问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遇到无效的重定向。缺少位置标题。团结问题相关的知识,希望对你有一定的参考价值。

我使用Unity WWWForm将许可证验证请求发布到URL。代码在Unity 5.6中有效,但它在Unity 2017.3.1f1中不起作用。我也在Unity 2018中尝试了这个。它没有用。

这是错误消息:遇到无效重定向(缺少位置标题?)

这是我正在使用的代码。

void Awake() {
    Instance = this;
    WWWForm form = new WWWForm ();
    mainHeader = form.headers;

    mainHeader ["Authorization"] = "Basic " + System.Convert.ToBase64String (System.Text.Encoding.ASCII.GetBytes ("dummyId:#dummyPassword"));

}


public void HitForLicence(){
    string jsonData = JsonUtility.ToJson (new LicenseData { 

        LICENCE_KEY="kwsnfdksfksnf",
        MACHINE_IP="192.168.1.1"

    });




    Debug.Log (jsonData);

    byte[ ] postData = System.Text.Encoding.ASCII.GetBytes (jsonData);


    //headers ["Authorization"] = "Basic " + System.Convert.ToBase64String (System.Text.Encoding.ASCII.GetBytes ("unity:@piun!ty"));
    if (mainHeader.ContainsKey ("Content-Type")) {

        mainHeader ["Content-Type"] = "application/json";

    } else {

        mainHeader.Add ("Content-Type", "application/json");
    }


    WWW www = new WWW (LicenseURL, postData, mainHeader);
    StartCoroutine (CheckForLicense (www));

}

public IEnumerator CheckForLicense (WWW www)
{

    Debug.Log("Check For License..");


    yield return www;


    //if (www.isDone ) {
        if (www.error != null) {
            ClearKeyBox ();
            print (www.error);
        }
        else {
            print (www.text);
            jsonNode = SimpleJSON.JSON.Parse(www.text);
            print ("MSG "+ jsonNode["MSG"].ToString());
        }
    //} 


    if (jsonNode != null && jsonNode["MSG"].Equals(ValidStr)) {
        HandleTextFile.WriteString(_SystemMACAddress+"-"+keyEntered);
        // Next screen
    } else {
        ClearKeyBox ();
    }

}

以前有人面对这个吗?请帮忙。

答案

我在Unity 2018下也遇到过WWW的问题。

目前我正在使用UnityWebRequest - 我认为WWW已经过时,但我找不到任何参考。

基本上改变你的代码如下:

...

    UnityWebRequest www = UnityWebRequest.Post(LicenseURL, form)
    StartCoroutine (CheckForLicense (www));

}

public IEnumerator CheckForLicense (WWW www)
{

    Debug.Log("Check For License..");

...

我想你必须通过SetRequestHeader设置头部并将你的帖子数据放入WWWForm ...

我现在无法检查它...希望它有所帮助!

另一答案

就像dome12b所说的那样,改为UnityWebRequest。

但是,另外,将chunked transfer设置为false。我有同样的问题,它让我疯了。分块转移修复了所有。

UnityWebRequest www = UnityWebRequest.Post(LicenseURL, form)
www.chunkedTransfer = false;
另一答案

这最终解决了我的问题。

public void Post(string url)
{
    ServicePointManager.ServerCertificateValidationCallback =
        delegate(object s, X509Certificate certificate,
                 X509Chain chain, SslPolicyErrors sslPolicyErrors)
    { 
        return true; 
    };


    string jsonData = JsonUtility.ToJson (new LicenseData { 

        LICENCE_KEY="kwsnfdksfksnf",
        MACHINE_IP="192.168.1.1"

    });


    Debug.Log (jsonData);

    byte[ ] postData = System.Text.Encoding.ASCII.GetBytes (jsonData);



    if (mainHeader.ContainsKey ("Content-Type")) {

        mainHeader ["Content-Type"] = "application/json";

    } else {

        mainHeader.Add ("Content-Type", "application/json");
    }
    StartCoroutine (HttpRequest(postData, url));
}





IEnumerator HttpRequest(byte[] postData, string url)
{
    var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
    httpWebRequest.ContentType = "application/json";
    httpWebRequest.Method = "POST";
    httpWebRequest.AllowAutoRedirect = false;
    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {
        string jsonData = JsonUtility.ToJson(new LicenseData
            {
                LICENCE_KEY = "kwsnfdksfksnf",
                MACHINE_IP = "192.168.1.1"
            });

        streamWriter.Write(jsonData);
        streamWriter.Flush();
        streamWriter.Close();
    }

    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        var result = streamReader.ReadToEnd();
        print(result);
    }
    yield return null;
}

以上是关于遇到无效的重定向。缺少位置标题。团结问题的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS:使用 res.writeHead 的重定向缺少标头授权

Spotify ios SDK 登录:无效的重定向 URI

301 不带 www 的重定向域有效,但带 www 无效

spotify 的重定向 URI 无效

发现无效的重定向 URI

Jsp获取Java的重定向赋值(String)