diff --git a/lib/css/CssLoadingRuntimeModule.js b/lib/css/CssLoadingRuntimeModule.js index 15dbef8d060..2416e117bf3 100644 --- a/lib/css/CssLoadingRuntimeModule.js +++ b/lib/css/CssLoadingRuntimeModule.js @@ -111,7 +111,7 @@ class CssLoadingRuntimeModule extends RuntimeModule { ? crossOriginLoading === "use-credentials" ? 'link.crossOrigin = "use-credentials";' : Template.asString([ - "if (link.src.indexOf(window.location.origin + '/') !== 0) {", + "if (link.href.indexOf(window.location.origin + '/') !== 0) {", Template.indent( `link.crossOrigin = ${JSON.stringify(crossOriginLoading)};` ), diff --git a/test/configCases/crossorigin/set-crossorigin/index.js b/test/configCases/crossorigin/set-crossorigin/index.js index 6330978d157..a5e6677d872 100644 --- a/test/configCases/crossorigin/set-crossorigin/index.js +++ b/test/configCases/crossorigin/set-crossorigin/index.js @@ -65,3 +65,17 @@ it("should load script with crossorigin attribute anonymous (different origin)", return promise; }); + +it("should load style with crossorigin attribute anonymous (different origin)", function() { + var originalValue = __webpack_public_path__; + __webpack_public_path__ = "https://example.com/"; + const promise = import("./style.css?e" /* webpackChunkName: "crossorigin-different-origin" */); + __webpack_public_path__ = originalValue; + + var link = document.head._children[0]; + + expect(link.href).toBe("https://example.com/crossorigin-different-origin.web.css"); + expect(link.crossOrigin).toBe("anonymous"); + + return promise; +}); diff --git a/test/configCases/crossorigin/set-crossorigin/style.css b/test/configCases/crossorigin/set-crossorigin/style.css new file mode 100644 index 00000000000..60f1eab9713 --- /dev/null +++ b/test/configCases/crossorigin/set-crossorigin/style.css @@ -0,0 +1,3 @@ +body { + color: red; +} diff --git a/test/configCases/crossorigin/set-crossorigin/webpack.config.js b/test/configCases/crossorigin/set-crossorigin/webpack.config.js index f76ae2a4fa3..10096afbdf0 100644 --- a/test/configCases/crossorigin/set-crossorigin/webpack.config.js +++ b/test/configCases/crossorigin/set-crossorigin/webpack.config.js @@ -10,5 +10,8 @@ module.exports = { }, optimization: { minimize: false + }, + experiments: { + css: true } }; diff --git a/test/helpers/FakeDocument.js b/test/helpers/FakeDocument.js index c87ccce7758..55a3a94907f 100644 --- a/test/helpers/FakeDocument.js +++ b/test/helpers/FakeDocument.js @@ -160,7 +160,9 @@ class FakeSheet { let css = fs.readFileSync( path.resolve( this._basePath, - this._element.href.replace(/^https:\/\/test\.cases\/path\//, "") + this._element.href + .replace(/^https:\/\/test\.cases\/path\//, "") + .replace(/^https:\/\/example\.com\//, "") ), "utf-8" );