Facebook喜欢&从bootstrap的cdn加载字体真棒时出现CORS错误

时间:2014-12-17 23:42:58

标签: facebook twitter-bootstrap cors

设定:

我们已根据此StackOverflow answer

在我们的服务器上实施了以下修复程序
# ALLOW CROSS DOMAIN FONTS
# -----------------------------------------------------------------------
# Allow access from all domains for webfonts.
# Alternatively you could only whitelist your
# subdomains like "subdomain.example.com".

<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css|css)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>

我们在网站上也有一个类似Facebook的按钮,用AppID实现。


问题:

在DEV工具中,我们看到以下三个错误(2个SHA-1错误和一个CORS错误):

  1. 本网站使用SHA-1证书;它建议你使用 具有使用散列函数的签名算法的证书 强于SHA-1 = 7r8gQb8MIqE.js
  2. 阻止跨源请求:同源策略禁止在http://netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.woff?v=4.2.0读取远程资源。 这可以通过将资源移动到同一个域来修复 启用CORS。 fontawesome-webfont.woff
  3. 本网站使用SHA-1证书;它建议你使用 具有使用哈希函数的签名算法的证书
    强于SHA-1 = like.php

  4. 如果我们注释掉Facebook之类的按钮,我们就不会发现任何这些错误。


    问题:

    有没有人知道Facbook如按钮SHA-1错误是否触发了CORS错误,是否有人知道如何解决这种情况?


    更新 - 尝试过MDN javascript但没有变化:

    尝试使用javascript修复此问题,如下所述:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

    但我并不完全理解我正在做什么以及在清除缓存等之后我没有看到标题返回:Access-Control-Allow-Origin: *

    这就是我的尝试:

    <script>
      // https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
      var invocation = new XMLHttpRequest();
      var url = 'http://netdna.bootstrapcdn.com/font-awesome/';
    
      function callOtherDomain() {
        if(invocation) {
          invocation.open('GET', url, true);
          invocation.onreadystatechange = handler;
          invocation.send();
        }
      }
    </script>
    

0 个答案:

没有答案