UnityWebRequest 의 SetRequestHeader를 이용해 Cookie 값을 넣어 세션 유지 기능을 처리하는 중 생긴 문제

 

테스트 기기

Windows10

LG G7

Galaxy S6

 

- Unity 5.6.2 버전에서 사용할 당시 PC와 Android 플랫폼에서 요청할 때 매번 SetRequestHeader에 쿠키값을 포함하여 요청

- Unity 2017.4.3 버전과 2018.2.21 버전에서 Android 플랫폼에서 요청할 때 매번 SetRequestHeader에 쿠키값을 포함하면 문제 발생 ( 404 Error )

 

 

문제 해결 방법

- 문제가 되는 Unity 버전에서는 Android 플랫폼으로 빌드할 때 요청시 SetRequestHeader에 쿠키값을 포함하지 않은 상태로 수정하여 빌드

 

 

예제 코드

        WaitForEndOfFrame waitForEndOfFrame = new WaitForEndOfFrame();
        UnityWebRequest unityWebRequest = UnityWebRequest.Get("URL_OR_URI");

#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_5 || UNITY_2017_1_0 
        unityWebRequest.SetRequestHeader("Cookie", "COOKIE_VALUE"); 
#else

#if UNITY_5 || UNITY_2017_1 
        AsyncOperation asyncOperation = unityWebRequest .Send(); 
        while(!asyncOperation.isDone) 
        { 
            yield return waitForEndOfFrame; 
        } 
#else
        UnityWebRequestAsyncOperation unityWebRequestAsyncOperation = unityWebRequest.SendWebRequest(); 
        while(!unityWebRequestAsyncOperation.isDone) 
        { 
            yield return waitForEndOfFrame; 
        } 
#endif

 

UnityWebRequest Redirect 시 Cookie가 전송되지 않아서 생기는 문제

 

UnityWebRequest 관련 처리가 변경된 Unity 버전:  2017.1.1 ( 2017.1.0p5 추가 )

 

참고

https://unity3d.com/kr/unity/whats-new/unity-2017.1.1

  • Networking: UnityWebRequest: Fixed an issues where cookies were not sent on redirect. - (832192)

 

 

Posted by Heon_Dev
,