2015-05-07 4 views
3

Мне было интересно, может ли кто-нибудь кратко объяснить, как вы получаете REST api для работы с проектом Unity3D, созданным для платформы WebGL. Я только что начал менять свой проект, думая, что могу использовать REST, чтобы обойти использование Parse потоков в сборке WebGL, которую мне нужно сделать. Я быстро столкнулся с проблемой CORS, хотя и не знаком с ней, я не уверен, как решить проблему.Unity3d + WebGL = запрос на перекрестный запрос заблокирован

В настоящее время я использую класс WWW для отправки запроса из Unity.

Пример «Logging In» пользователь будет:

 WWWForm form = new WWWForm(); 

     var headers = form.headers; 
     headers["Method"] = "GET"; 
     headers["X-Parse-Application-Id"] = AppID; 
     headers["X-Parse-REST-API-Key"] = RestID; 
     headers["X-Parse-Revocable-Session"] = "1"; 
     headers["Content-Type"] = "application/json"; 

     WWW www = new WWW("https://api.parse.com/1/login?username="+name+"&password="+password, null, headers); 

Это прекрасно работает в редакторе, но после того, как здание для WebGL и загрузки на мой хост в Разбираем происходит следующее ...

я получаю следующее сообщение об ошибке в FireFox:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://api.parse.com/1/login?username=jleslie5159&password=Osulator5159!. This can be fixed by moving the resource to the same domain or enabling CORS. 

И что-то подобное в Chrome ...

+0

Отправьте его как запрос POST и проверьте, не изменили ли оно что-либо для вас. – Radio

+0

Дайте ему попробовать, похоже, не имеет значения. –

+0

Извините! Согласно документации, для него настроена Unity. http://docs.unity3d.com/Manual/webgl-networking.html Я бы попросил группу google parse.com понять, почему это не работает. – Radio

ответ

2

Для всех, кто хочет я решил мою проблему следующим образом:

WWWForm form = new WWWForm(); 
     var headers = form.headers; 
     headers["X-Parse-Application-Id"] = "AppId"; 
     headers["X-Parse-REST-API-Key"] = "RestKey"; 
     headers["Content-Type"] = "application/json"; 
     WWW www = new WWW("https://api.parse.com/1/login?username="+name+"&password="+password, null, headers); 
     while(!www.isDone) 
      yield return 1; 

Проблемы стебли от установки «заголовков [« Метод »] =« GET »« По-видимому, разрешено отправлять только определенные заголовки или вы вызываете нарушение CORS. Я решил проблему, прочитав ответ в консоли браузера, в котором указано, почему запрос был заблокирован. И просто удалили оскорбительные заголовки.

0

Я решаю, добавив заголовок Access-Control-Allow-Origin: * в ответ от сервера. Для объяснения, вы можете понять это по этой ссылке: https://developer.tizen.org/dev-guide/2.2.0/org.tizen.web.appprogramming/html/guide/w3c_guide/sec_guide/cors.htm

Надежда это поможет :)

+0

Ссылка больше не работает. Не могли бы вы обновить ссылку или объяснить, как это делается? У меня такая же проблема. –

+0

@ TheOddler Извините, я не владелец этой ссылки. Но я нашел это [link] (https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS), которые используют ту же идею. вам лучше установить конфигурацию сервера в качестве [link] (http://enable-cors.org/server.html) или попробовать в NodeJS 'response.writeHead (200, {'Access-Control-Allow- Origin ':' * '}); ' –

Смежные вопросы