2016-08-11 2 views
1

С последним обновлением Android-Webview (52.0.2743.98) у меня очень тяжелые времена, отправляющие файлы cookie на мой сервер websocket с помощью Cordova.Отправка файлов cookie с веб-сайтов Cordova на Android

Я использую куки для аутентификации и этот код, используемый для работы отлично перед обновлением: this.websocket = new WebSocket(url);

Я даже попробовал другой способ заставить заголовки печенья во время рукопожатия, но он не работает:

this.websocket = new WebSocket(
    url, 
    [], 
    { headers: { Cookie: 'key=value' } } 
); 

Вот ответ сервера:

WebSocket connection to 'wss://api.my.url/dev/ws' failed: 
Error during WebSocket handshake: Unexpected response code: 403 

и под Network Tab в Chrome:

Request: 
Accept-Encoding:gzip, deflate 
Accept-Language:en-GB,en-US;q=0.8 
Cache-Control:no-cache 
Connection:Upgrade 
Host:api.host.com 
Origin:file:// 
Pragma:no-cache 
Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits 
Sec-WebSocket-Key:<random value>== 
Sec-WebSocket-Version:13 
Upgrade:websocket 
User-Agent:Mozilla/5.0 (Linux; Android 6.0.1; Nexus 6P Build/MTC19X; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.98 Mobile Safari/537.36 
X-Requested-With:com.domain 

Response: 
Access-Control-Allow-Credentials:true 
Access-Control-Allow-Headers:DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type 
Access-Control-Allow-Methods:GET, POST, PUT, DELETE, OPTIONS 
Access-Control-Allow-Origin:file:// 
Connection:keep-alive 
Content-Encoding:gzip 
Content-Type:application/json; charset=utf-8 
Date:Thu, 11 Aug 2016 13:47:09 GMT 
Server:nginx/1.8.1 
Set-Cookie:key=<random id>; Path=/ 
Transfer-Encoding:chunked 
Vary:Accept-Encoding 

Обратите внимание, что он все еще работает на Chrome и на IOS (и в предыдущих версиях Android-WebView)

любая рекомендация?

+0

не думает мы можем явно передавать заголовки на websocket по протоколу. Однако файлы cookie по умолчанию должны быть переданы с каждым запросом normall http или ws. Я также столкнулся с такой же проблемой в обновленной версии Android. – Ashish

+0

Вы нашли решение для этого? –

ответ

0

Возможно, лучшим вариантом для решения вашей проблемы является изменение браузера. Теперь вы используете Chrome-браузер для отображения гибридного приложения, вы можете изменить этот браузер по умолчанию.

У меня была такая же проблема с WebSockets, и я использовал браузер CrossWalk, и у меня не было проблем с WebSockets. Вы можете проверить проект Пешеходного на этой странице: https://crosswalk-project.org/documentation/android.html

Я использую Ионный реализовать мое приложение и только я должен был выполнить эту команду, чтобы установить Пешеходный Browser:

ионного браузер добавить Пешеходный

+0

Crosswalk теперь больше не поддерживается, для KitKat и выше они предлагают использовать Android System WebView, который теперь является единственным обновляемым «приложением», –

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