Title: [225574] trunk
Revision
225574
Author
commit-qu...@webkit.org
Date
2017-12-06 09:13:35 -0800 (Wed, 06 Dec 2017)

Log Message

Service Worker fetch should filter HTTP headers that are added by CachedResourceLoader/CachedResource
https://bugs.webkit.org/show_bug.cgi?id=180462

Patch by Youenn Fablet <you...@apple.com> on 2017-12-06
Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/fetch-response-taint.https-expected.txt:

Source/WebCore:

Coved by rebased test.

* loader/CrossOriginAccessControl.cpp:
(WebCore::cleanRedirectedRequestForAccessControl): Accept header is a safe header so it is fine to keep it.
* workers/service/context/ServiceWorkerFetch.cpp:
(WebCore::ServiceWorkerFetch::dispatchFetchEvent): Cleaning headers added by CachedResourceLoader/CachedResource.

Modified Paths

Diff

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (225573 => 225574)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2017-12-06 11:46:50 UTC (rev 225573)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2017-12-06 17:13:35 UTC (rev 225574)
@@ -1,3 +1,12 @@
+2017-12-06  Youenn Fablet  <you...@apple.com>
+
+        Service Worker fetch should filter HTTP headers that are added by CachedResourceLoader/CachedResource
+        https://bugs.webkit.org/show_bug.cgi?id=180462
+
+        Reviewed by Geoffrey Garen.
+
+        * web-platform-tests/service-workers/service-worker/fetch-response-taint.https-expected.txt:
+
 2017-12-05  Chris Dumez  <cdu...@apple.com>
 
         ServiceWorkerGlobalScope prototype chain should be immutable

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-response-taint.https-expected.txt (225573 => 225574)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-response-taint.https-expected.txt	2017-12-06 11:46:50 UTC (rev 225573)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-response-taint.https-expected.txt	2017-12-06 17:13:35 UTC (rev 225574)
@@ -39,10 +39,10 @@
 PASS url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"cors" credentials:"omit" should fail. 
 PASS url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"cors" credentials:"same-origin" should fail. 
 PASS url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"cors" credentials:"include" should fail. 
-FAIL fetching url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=*" mode:"cors" credentials:"omit" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Type error"
-FAIL fetching url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=*" mode:"cors" credentials:"same-origin" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Type error"
+PASS fetching url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=*" mode:"cors" credentials:"omit" should succeed. 
+PASS fetching url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=*" mode:"cors" credentials:"same-origin" should succeed. 
 PASS url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=*" mode:"cors" credentials:"include" should fail. 
-FAIL fetching url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=https://localhost:9443&ACACredentials=true" mode:"cors" credentials:"include" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL fetching url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=https://localhost:9443&ACACredentials=true" mode:"cors" credentials:"include" should succeed. assert_equals: expected "username1s" but got "undefined"
 PASS fetching url:"https://localhost:9443/?url="" mode:"same-origin" credentials:"omit" should succeed. 
 PASS fetching url:"https://localhost:9443/?url="" mode:"same-origin" credentials:"same-origin" should succeed. 
 PASS fetching url:"https://localhost:9443/?url="" mode:"same-origin" credentials:"include" should succeed. 

Modified: trunk/Source/WebCore/ChangeLog (225573 => 225574)


--- trunk/Source/WebCore/ChangeLog	2017-12-06 11:46:50 UTC (rev 225573)
+++ trunk/Source/WebCore/ChangeLog	2017-12-06 17:13:35 UTC (rev 225574)
@@ -1,3 +1,17 @@
+2017-12-06  Youenn Fablet  <you...@apple.com>
+
+        Service Worker fetch should filter HTTP headers that are added by CachedResourceLoader/CachedResource
+        https://bugs.webkit.org/show_bug.cgi?id=180462
+
+        Reviewed by Geoffrey Garen.
+
+        Coved by rebased test.
+
+        * loader/CrossOriginAccessControl.cpp:
+        (WebCore::cleanRedirectedRequestForAccessControl): Accept header is a safe header so it is fine to keep it.
+        * workers/service/context/ServiceWorkerFetch.cpp:
+        (WebCore::ServiceWorkerFetch::dispatchFetchEvent): Cleaning headers added by CachedResourceLoader/CachedResource.
+
 2017-12-06  Zan Dobersek  <zdober...@igalia.com>
 
         [CoordGraphics] Introduce Nicosia::PaintingContext, add Cairo implementation

Modified: trunk/Source/WebCore/loader/CrossOriginAccessControl.cpp (225573 => 225574)


--- trunk/Source/WebCore/loader/CrossOriginAccessControl.cpp	2017-12-06 11:46:50 UTC (rev 225573)
+++ trunk/Source/WebCore/loader/CrossOriginAccessControl.cpp	2017-12-06 17:13:35 UTC (rev 225574)
@@ -123,7 +123,6 @@
     request.clearHTTPReferrer();
     request.clearHTTPOrigin();
     request.clearHTTPUserAgent();
-    request.clearHTTPAccept();
     request.clearHTTPAcceptEncoding();
 }
 

Modified: trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp (225573 => 225574)


--- trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp	2017-12-06 11:46:50 UTC (rev 225573)
+++ trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp	2017-12-06 17:13:35 UTC (rev 225574)
@@ -28,6 +28,7 @@
 
 #if ENABLE(SERVICE_WORKER)
 
+#include "CrossOriginAccessControl.h"
 #include "EventNames.h"
 #include "FetchEvent.h"
 #include "FetchRequest.h"
@@ -94,8 +95,13 @@
 {
     ASSERT(globalScope.isServiceWorkerGlobalScope());
 
+    auto httpReferrer = request.httpReferrer();
+    // We are intercepting fetch calls after going through the HTTP layer, which adds some specific headers.
+    // Let's clean them so that cross origin checks do not fail.
+    cleanRedirectedRequestForAccessControl(request);
+
     auto requestHeaders = FetchHeaders::create(FetchHeaders::Guard::Immutable, HTTPHeaderMap { request.httpHeaderFields() });
-    auto fetchRequest = FetchRequest::create(globalScope, FetchBody::fromFormData(request.httpBody()), WTFMove(requestHeaders),  WTFMove(request), WTFMove(options), request.httpReferrer());
+    auto fetchRequest = FetchRequest::create(globalScope, FetchBody::fromFormData(request.httpBody()), WTFMove(requestHeaders),  WTFMove(request), WTFMove(options), WTFMove(httpReferrer));
 
     FetchEvent::Init init;
     init.request = WTFMove(fetchRequest);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to