Github user vladimir-kotikov commented on a diff in the pull request: https://github.com/apache/cordova-plugin-file-transfer/pull/74#discussion_r29036350 --- Diff: src/wp/FileTransfer.cs --- @@ -210,6 +216,77 @@ public FileTransferProgress(long bTotal = 0, long bLoaded = 0) } /// <summary> + /// Helper method to copy all relevant cookies from the WebBrowser control into a header on + /// the HttpWebRequest + /// </summary> + /// <param name="browser">The source browser to copy the cookies from</param> + /// <param name="webRequest">The destination HttpWebRequest to add the cookie header to</param> + /// <returns>Nothing</returns> + private async Task CopyCookiesFromWebBrowser(HttpWebRequest webRequest) + { + var tcs = new TaskCompletionSource<object>(); + + // Accessing WebBrowser needs to happen on the UI thread + Deployment.Current.Dispatcher.BeginInvoke(() => + { + // Get the WebBrowser control + if (this.browser == null) + { + PhoneApplicationFrame frame = Application.Current.RootVisual as PhoneApplicationFrame; + if (frame != null) + { + PhoneApplicationPage page = frame.Content as PhoneApplicationPage; + if (page != null) + { + CordovaView cView = page.FindName("CordovaView") as CordovaView; + if (cView != null) + { + this.browser = cView.Browser; + } + } + } + } + + try + { + // Only copy the cookies if the scheme and host match (to avoid any issues with secure/insecure cookies) + // NOTE: since the returned CookieCollection appears to munge the original cookie's domain value in favor of the actual Source domain, + // we can't know for sure whether the cookies would be applicable to any other hosts, so best to play it safe and skip for now. + if (this.browser.Source.Scheme == webRequest.RequestUri.Scheme && this.browser.Source.Host == webRequest.RequestUri.Host) + { + string cookieHeader = ""; + string requestPath = webRequest.RequestUri.PathAndQuery; + CookieCollection cookies = this.browser.GetCookies(); + + // Iterate over the cookies and add to the header + foreach (Cookie cookie in cookies) + { + // Check that the path is allowed, first + // NOTE: Path always seems to be empty for now, even if the cookie has a path set by the server. + if (cookie.Path.Length == 0 || requestPath.IndexOf(cookie.Path) == 0) --- End diff -- `requestPath.IndexOf(cookie.Path)` - this comparison is case-sensitive. Consider using overload of `indexOf` method with `InvariantCultureIgnoreCase` or `OrdinalIgnoreCase` comparison.
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. --- --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org For additional commands, e-mail: dev-h...@cordova.apache.org