Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态加载字体。Javascript:No';访问控制允许原点';标题已存在_Javascript_Nginx_Cors - Fatal编程技术网

动态加载字体。Javascript:No';访问控制允许原点';标题已存在

动态加载字体。Javascript:No';访问控制允许原点';标题已存在,javascript,nginx,cors,Javascript,Nginx,Cors,我正在尝试使用此函数动态加载字体 ... // Load Font function loadFont(url, fontName) { if (!isFontAvailable(fontName)) { let fontObject = new FontFace(fontName, 'url(' + url + ')'); fontObject.withCredentials = true;

我正在尝试使用此函数动态加载字体

...
    // Load Font
    function loadFont(url, fontName) {
        if (!isFontAvailable(fontName)) {
            let fontObject = new FontFace(fontName, 'url(' + url + ')');
            fontObject.withCredentials = true;
            fontObject.load().then(function (loaded_face) {
                document.fonts.add(loaded_face);
                document.body.style.fontFamily = fontName + ', Arial';
            }).catch(function (error) {
                console.log("loadFont: " + error);
            });
        }
    }
但我发现以下错误:

Access to font at 'http://localhost/fonts/iransans/IRANSansLight.ttf' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
IRANSansLight.ttf:1 Failed to load resource: net::ERR_FAILED
我正在使用Nginx作为我的web服务器。我将这段代码添加到配置文件中

location ~* "^.*?\.(eot)|(ttf)|(woff)$" {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Expose-Headers true;
}
我也检查了我的回复标题:

/var/www$ curl -I http://localhost/fonts/iransans/IRANSansLight.ttf
HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Mon, 24 Jun 2019 16:50:21 GMT
Content-Type: application/octet-stream
Content-Length: 59968
Last-Modified: Sun, 03 Mar 2019 20:30:49 GMT
Connection: keep-alive
ETag: "5c7c3979-ea40"
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: true
Accept-Ranges: bytes
如您所见,访问控制允许原点就在那里。但我不知道为什么错误会说:“不存在‘访问控制允许来源’标题”

顺便说一下,我尝试了其他方法来加载我的字体,如下所示: 但也没用,我是说没什么变化。当然,我编辑了一点JSFIDLE,这是另一个故事

CORS策略已阻止从源“null”访问“”处的字体:请求的资源上不存在“Access Control Allow origin”标头

其中的“origin
null
”表示加载字体的页面不是从HTTP URL加载的(例如,
HTTP://
https://
)。通常这意味着您通过在文件资源管理器或类似工具中双击
文件://
URL来加载页面。一些浏览器(如Chrome)拒绝允许源
null
页面访问任何跨源、标题或无标题的内容。Origin
null
与任何东西都不匹配,甚至不匹配
*
(根据他们的推理)


相反,不要从
文件://
URL加载页面。使用
http://
https://
URL(可能是访问本地运行的web服务器的URL)。

我必须清除浏览器缓存。多亏了@Quentin,问题解决了。

您是否尝试过清除浏览器缓存?我希望字体(包括缺少CORS权限)被缓存。