2016-08-11 11 views
1

最後のAndroid-Webviewアップデート(52.0.2743.98)では、Cordovaを使用してwebsocketサーバーにCookieを送信するのが非常に困難です。AndroidでCordova Websocketを使用してCookieを送信する

私は、認証および更新の前に完璧にうまく動作するように使用されるこのコードのためにクッキーを使用しています: 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 

と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上のヘッダをプロトコルで渡すことができます。しかし、デフォルトのクッキーは、各リクエストnormall httpまたはwsで渡されている必要があります。私もアンドロイドのアップデート版で同じ問題に直面している。 – Ashish

+0

解決策を見つけましたか? –

答えて

0

あなたの問題を解決するには、ブラウザを変更することをお勧めします。ハイブリッドアプリを表示するためにクロムブラウザを使用すると、このデフォルトブラウザを変更できます。

WebSocketと同じ問題がありました。私はCrossWalkブラウザを使用していましたが、WebSocketsに問題はありませんでした。このページでは横断歩道のプロジェクトを確認することができます。https://crosswalk-project.org/documentation/android.html

私は私のアプリを実装するためにイオンを使用していますし、私だけは、横断歩道のブラウザをインストールするには、このコマンドを実行する必要がありました:

イオンのブラウザは横断歩道

+0

CrosswalkはKitKatのためにもうメンテナンスされていません。そして、彼らは現在、単一の更新可能な "app"であるAndroid System WebViewの使用を提案しています。 –

関連する問題