.htaccess 如何修复';缺少跨源资源共享(CORS)响应头';网络字体问题?
由于某些原因,字体已停止在我的网站上呈现。字体存储在本地,与站点位于同一服务器上 我查找了这个问题,似乎是.htaccess 如何修复';缺少跨源资源共享(CORS)响应头';网络字体问题?,.htaccess,fonts,cors,font-face,webfonts,.htaccess,Fonts,Cors,Font Face,Webfonts,由于某些原因,字体已停止在我的网站上呈现。字体存储在本地,与站点位于同一服务器上 我查找了这个问题,似乎是缺少跨源资源共享(CORS)响应头,但我无法理解此问题的解决方案 所有不同的网站都说要使用:accesscontrolalloworigin: 但由于我主要是前端,我不知道把它放在哪里。这是我的主人可以帮忙的吗 我能做些什么来解决这个问题 编辑: 有关地点为: 例如,右上角的电话号码应为Bebas字体,但默认为Impact 在控制台中,我得到以下错误: 跨源资源共享策略已阻止加载来自源“”的
缺少跨源资源共享(CORS)响应头
,但我无法理解此问题的解决方案
所有不同的网站都说要使用:accesscontrolalloworigin:
但由于我主要是前端,我不知道把它放在哪里。这是我的主人可以帮忙的吗
我能做些什么来解决这个问题
编辑:
有关地点为:
例如,右上角的电话号码应为Bebas字体,但默认为Impact
在控制台中,我得到以下错误:
跨源资源共享策略已阻止加载来自源“”的字体:“访问控制允许源”标头的值“”不等于提供的源。因此,不允许访问源“”
我联系了我的主人,他说:
Access-Control-Allow-Origin "http://www.cyclistinsuranceaustralia.com.au"
在我的.htaccess文件中,但这没有更改。如果您只是对使用
访问控制允许源代码感兴趣:
您可以使用站点根目录下的.htaccess
文件执行此操作
Header set Access-Control-Allow-Origin "*"
以下是一些有用的信息:
在您的特定情况下,问题似乎是从非规范url(www.site.com vs.site.com)访问站点 不必修复CORS问题(这可能需要根据服务提供商使用正确的CORS标题将代理写入服务器字体),您可以将Url规范化为始终位于规范Url上的服务器内容,并在请求不带“www.”的页面时简单地重定向
或者,您可以将字体上载到不同的服务器/CDN,这些服务器/CDN已知配置了CORS头,或者您可以轻松地执行此操作。我假设您的主机使用的是C-Panel,可能是HostGator或GoDaddy。在这两种情况下,它们都使用C-Panel(事实上,许多主机都使用C-Panel)使服务器管理在最终用户身上尽可能简单。即使您是通过其他人托管-查看您是否可以登录到某种管理面板并找到一个可编辑的.htaccess文件。(注意:前面的句点仅表示它是一个“隐藏”文件/目录) 找到htaccess文件后,添加以下行:
Header set Access Control Allow Origin“*”
只是看看它是否有效。
警告:不要在生产服务器上使用此行*
更改为请求域的地址http://cyclistinsuranceaustralia.com.au/
。您可能会发现规范寻址(包括www)存在问题,如果是这样,您可能需要为重定向配置主机。那是一座不同的、更小的桥。你至少会在正确的地方在HTML中,您设置了一个“基本”标记:
亚马逊(AWS)S3预签名帖子在某些浏览器上出现了类似的标题问题 要点是告诉bucket CORS暴露标题
访问控制允许原点
此答案中的更多详细信息:我们在fontawesome-webfont.woff2在共享主机(Cpanel)上抛出406错误时遇到了这个问题。我正在为Wordpress多站点项目开发难以捉摸的“无cookie域”,我的“www.domain.tld”页面在Chrome中会出现以下错误(3次): 跨源资源共享策略已阻止加载来自源“”的字体:请求的资源上不存在“访问控制允许源”标题。因此,不允许访问源“” 在Firefox中,有一点更详细: 可下载字体:下载失败(字体系列:“FontAwesome”样式:正常重量:正常拉伸:正常src索引:1):错误的URI或不允许跨站点访问源:
font-awesome.min.css:4:14 已阻止跨源请求:同一源策略不允许读取位于的远程资源。(原因:缺少CORS标头“访问控制允许原点”) 我找到了QWANT(QWANT.com=fantastic)并发现了这篇文章: 与不同的共享主机支持人员聊天一个小时(一个人甚至不知道浏览器中的F12…),然后等待对在玩mod_security时没有乐趣而被剪掉的罚单的响应。在此期间,我试图从帖子中拼凑出.htaccess文件的代码,并成功地修复了406个错误,完美无瑕:
<IfModule mod_headers.c>
<IfModule mod_rewrite.c>
SetEnvIf Origin "http(s)?://(.+\.)?domain\.tld(:\d{1,5})?$" CORS=$0
Header set Access-Control-Allow-Origin "%{CORS}e" env=CORS
Header merge Vary "Origin"
</IfModule>
</IfModule>
这个修正真的有点让我大吃一惊,因为我以前遇到过这个问题,在财富500强公司工作时,这些公司的开发人员比我的Apache知识库高出几英里,如果不让它调整Apache设置,就无法解决这样的问题
这是一种神奇的解决方案,可以解决所有无cookie(或者如果使用CloudFlare…)域的CDN问题,以减少cookie带来的不必要的web流量,这些cookie随每个图像请求一起发送,但却像一次糟糕的相亲一样被服务器丢弃
超级安全,超级优雅。喜欢:你不必向资源窃贼/热链接窃贼类型开放服务器带宽
这三位才华横溢的人共同努力解决了一度被认为无法与.htaccess解决的问题,我是从他那里拼凑出这段代码的:
@野洋
@达夫兰多姆
@普拉塔普科里塔拉酒店
我认为您的解决方案就在这里:@croies谢谢,但不幸的是,这对我来说毫无意义
<IfModule mod_headers.c>
<IfModule mod_rewrite.c>
SetEnvIf Origin "http(s)?://(.+\.)?domain\.tld(:\d{1,5})?$" CORS=$0
Header set Access-Control-Allow-Origin "%{CORS}e" env=CORS
Header merge Vary "Origin"
</IfModule>
</IfModule>
SetEnvIf Origin "http(s)?://(.+\.)?(othersite\.com|mywebsite\.com)(:\d{1,5})?$" CORS=$0