无法访问@ font-face中提到的字体文件

时间:2019-07-11 12:40:44

标签: javascript css reactjs webpack font-face

首先,我是webpack及其加载程序的新手。我有一个要在其中生成CSS文件的应用程序,该文件位于与发出请求的源域不同的域中(更像是静态代码存储库)。问题是,服务器加载了style.css文件,并且它具有字体的导入,这些字体也存储在同一存储库中,并且可以通过以下方式访问:

@font-face {
    font-family: someFont;
    src: url(/0.0.1/fonts/f9c391f982c59a955bb0e1866fbbed4a.woff2) format("woff2"),url(/0.0.1/fonts/ac4b1e27ea3661e299554aaa429e97c5.woff) format("woff");
    font-weight: 300;
    font-style: normal;
    font-display:swap}

现在,让我们假设它位于styles.less文件中,并且位于域https://example.com

正如我所知的CORS问题,此style.less已完美加载,并在

这样的节点/ Express应用程序中添加了cors()
cont cors = require('cors');
app.use(cors());

现在的问题是,当styles.css文件尝试加载内部字体时,我开始收到CORS错误。当我检查标题时,去该存储库的所有其他请求的响应标题中都有access-control-allow-origin: '*',但字体请求中没有

这是加载程序和路径的Web Pack配置:

output: {
        path: path.resolve(__dirname, `dist/client/${pkg.version}`),
        publicPath: `/${pkg.version}/`
    },

    devtool: ifProduction('nosources-source-map', 'source-map'),
module: {
        rules: [
            {
                test: /\.less$/,
                use: [MiniCssExtractPlugin.loader, 'css-loader', 'less-loader']
            },
            {
                test: /\.(ttf|eot|svg?)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
                loader: 'file-loader?name=fonts/[name].[ext]'
            },
            {
                test: /\.(png|jpg|ico|svg|eot|ttf|woff|woff2)$/,
                loader: 'url-loader'
            }
        ]
    },

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

尝试将url定义内的font-face字符串括在引号中。如下所示。

// Note the quotation marks

src: url("/0.0.1/fonts/f9c391f982c59a955bb0e1866fbbed4a.woff2") format("woff2"),
     url("/0.0.1/fonts/ac4b1e27ea3661e299554aaa429e97c5.woff") format("woff");