diff --git a/components/net/fetch/methods.rs b/components/net/fetch/methods.rs index 68429b2d79d..952ec3a91e8 100644 --- a/components/net/fetch/methods.rs +++ b/components/net/fetch/methods.rs @@ -10,7 +10,7 @@ use fetch::cors_cache::CORSCache; use filemanager_thread::{FileManager, UIProvider}; use http_loader::{HttpState, set_default_accept_encoding, set_request_cookies}; use http_loader::{NetworkHttpRequestFactory, ReadResult, StreamedResponse, obtain_response, read_block}; -use http_loader::{auth_from_cache, determine_request_referrer}; +use http_loader::{auth_from_cache, determine_request_referrer, set_cookies_from_headers}; use http_loader::{send_response_to_devtools, send_request_to_devtools, LoadErrorType}; use hyper::header::{Accept, AcceptLanguage, Authorization, AccessControlAllowCredentials}; use hyper::header::{AccessControlAllowOrigin, AccessControlAllowHeaders, AccessControlAllowMethods}; @@ -980,7 +980,7 @@ fn http_network_or_cache_fetch(request: Rc, /// [HTTP network fetch](https://fetch.spec.whatwg.org/#http-network-fetch) fn http_network_fetch(request: Rc, - _credentials_flag: bool, + credentials_flag: bool, done_chan: &mut DoneChannel, context: &FetchContext) -> Response { @@ -1148,8 +1148,13 @@ fn http_network_fetch(request: Rc, // TODO this step isn't possible yet // Step 13 + // Step 14. + if credentials_flag { + set_cookies_from_headers(&url, &response.headers, &context.state.cookie_jar); + } + // TODO these steps - // Step 14 + // Step 15 // Substep 1 // Substep 2 // Sub-substep 1 @@ -1158,7 +1163,7 @@ fn http_network_fetch(request: Rc, // Sub-substep 4 // Substep 3 - // Step 15 + // Step 16 response } diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index 80817ebbf52..885ce794b6d 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -499,7 +499,7 @@ fn set_cookie_for_url(cookie_jar: &Arc>, } } -fn set_cookies_from_headers(url: &Url, headers: &Headers, cookie_jar: &Arc>) { +pub fn set_cookies_from_headers(url: &Url, headers: &Headers, cookie_jar: &Arc>) { if let Some(cookies) = headers.get_raw("set-cookie") { for cookie in cookies.iter() { if let Ok(cookie_value) = String::from_utf8(cookie.clone()) {