Android WebSocket: include cookies with request
Summary: This commit brings Android in line with iOS WebSockets by sending along cookies from the shared CookieManager. See: https://github.com/facebook/react-native/pull/5630 Closes https://github.com/facebook/react-native/pull/6067 Differential Revision: D3841122 Pulled By: mkonicek fbshipit-source-id: 6607424feeb31c9da4e370ebe4b33dbbedc0a446
This commit is contained in:
parent
74c32e2609
commit
04392f2428
|
@ -9,7 +9,9 @@
|
|||
|
||||
package com.facebook.react.modules.websocket;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.util.Base64;
|
||||
import android.webkit.CookieManager;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.IllegalStateException;
|
||||
|
@ -87,6 +89,27 @@ public class WebSocketModule extends ReactContextBaseJavaModule {
|
|||
.tag(id)
|
||||
.url(url);
|
||||
|
||||
if (url != null) {
|
||||
// Use the shared CookieManager to access the cookies
|
||||
// set by WebViews inside the same app
|
||||
CookieManager cookieManager = CookieManager.getInstance();
|
||||
|
||||
Uri parsedUrl = Uri.parse(url);
|
||||
Uri.Builder builtUrl = parsedUrl.buildUpon();
|
||||
|
||||
// To get HTTPS-only cookies for wss URLs,
|
||||
// replace wss with http in the URL.
|
||||
if (parsedUrl.getScheme().equals("wss")) {
|
||||
builtUrl.scheme("https");
|
||||
}
|
||||
|
||||
String cookie = cookieManager.getCookie(builtUrl.build().toString());
|
||||
|
||||
if (cookie != null) {
|
||||
builder.addHeader("Cookie", cookie);
|
||||
}
|
||||
}
|
||||
|
||||
if (headers != null) {
|
||||
ReadableMapKeySetIterator iterator = headers.keySetIterator();
|
||||
|
||||
|
|
Loading…
Reference in New Issue