npm 包 crossorigin-webpack-plugin 使用教程

阅读时长 6 分钟读完

当我们在使用 Webpack 打包项目时,常常会遇到如下问题:引入的外部资源的 URL 不是以 httphttps 开头,导致资源载入失败,这时候我们需要在资源 URL 前面添加 crossorigin 属性。而 crossorigin-webpack-plugin 就是一个解决这个问题的 npm 包。下面为大家详细介绍它的使用方法。

什么是 crossorigin-webpack-plugin?

crossorigin-webpack-plugin 是一个 Webpack 插件,它可以自动给 Webpack 打包生成的 js 文件中的静态资源加上 crossorigin 属性,避免了跨域问题,特别适用于 CDN 资源。

安装

安装 crossorigin-webpack-plugin,只需要在项目目录下执行以下命令:

使用方法

在使用 crossorigin-webpack-plugin 之前,我们需要了解一下 crossorigin 属性以及它的属性值,这对后面的插件设置很有帮助。

crossorigin 属性

该属性在 CORS(跨域资源共享)中使用。它告诉浏览器,是否有权利将一个请求交给其他的源,以便该源可以使用该请求的返回数据。

该属性具有以下属性值:

  • anonymous:跨域请求会发送 origin 头部但不会发送带有凭据的请求头部。
  • use-credentials:跨域请求会发送 origin 和 cookie 头部。

配置插件

webpack.config.js 文件中的 plugins 下添加如下代码:

-- -------------------- ---- -------
----- ------------------------ - -------------------------------------

-------------- - -
    -- ---
    -------- -
      --- --------------------------
        ------------ -----------------
      --
    -
-

以上配置表示,将资源 URL 前添加 crossorigin 属性,属性值为 use-credentials

另外,我们还可以将该插件的函数封装到一个自己定义的函数中,以便实现更为复杂的功能。示例如下:

-- -------------------- ---- -------
----- ------------------------ - -------------------------------------

-------- ---------------------- -
  ------ -
    -----------
    -------- -
      --- --------------------------
        ------------ -----------------
      ---
      -- -------
    -
  -
-

示例代码

以下是一个简单示例代码,用来显示如何使用 crossorigin-webpack-plugin,以及观察资源 URL 是否正常添加了 crossorigin 属性。

webpack.config.js 文件中添加如下代码:

-- -------------------- ---- -------
----- ---- - ---------------
----- ----------------- - ------------------------------
----- - ------------------ - - -------------------------------
----- ------------------------ - -------------------------------------


-------------- - -
    ----- --------------
    -------- --------------------
    ------ -----------------
    ------- -
        --------- --------------------------
        ----- ----------------------- --------
    --
    ------------- -
        ---------- ---------
        ------------ -
            ------------ -
                ------- -
                    ----- -------------------------
                    ----- ----------
                    ------- ------
                --
            --
        --
        ------------- ---------
    --
    -------- -
        --- ---------------------
        --- -------------------
            ------ ----------
        ---
        --- --------------------------
            ------------ -----------
        ---
    --
    ------- -
        ------ -
            -
                ----- ---------
                ---- ---------------- --------------
            --
        --
    --
-

以上代码将会在资源 URL 中添加 crossorigin="anonymous"。此外,在 index.html 中,我们也需要引进外部资源。假设外部资源如下:

其中,script.js 为引进本地资源。接下来,我们通过浏览器打开生成的 index.html 网页,检查其资源 URL 是否已成功添加 crossorigin 属性:

可以看到,通过使用 crossorigin-webpack-plugin,我们成功在资源 URL 前添加了 crossorigin 属性。这样,浏览器进行跨域请求时,就可以顺利加载外部资源了。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6006734f890c4f727758384a

纠错
反馈