如何使用 AJAX 和 PHP 在在线服务器中启用 CORS 以获取用于另一个 BigCartel 站点的字体

How do I enable CORS in an online server using AJAX and PHP to get font for use on another BigCartel site

我目前正在使用 BigCartel 设计网站。

我想使用自定义字体。无论我使用哪个服务器(目前是免费的 Hostinger 服务器),我都无法使用 htaccess 启用 CORS。

添加到.htaccess:

#   Header always add Access-Control-Allow-Origin "*"
Header always add Access-Control-Allow-Methods "POST, GET, PUT, OPTIONS, PATCH, DELETE"
Header always add Access-Control-Allow-Headers "X-Accept-Charset,X-Accept,Content-Type"
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$  [R=200,L,E=HTTP_ORIGIN:%{HTTP:ORIGIN}]]

CSS:

@font-face {
font-family: FontName;
src: url(http://WEBSITE_URL.com/fontname.woff);
}

大部分免费主机不会提供对所有文件的支持。但是得到 PHP 的支持是一件很棒的事情。所以你可以做的是,使用 PHP 以正确的格式提供文件。

所以对于你的问题,如果你有 font-name.woff,它的 MIME 类型是 application/x-font-woff,你可以做的是,创建一个代理 PHP 脚本来做类似的事情这个:

<?php
  ob_start();
  header("Content-type: application/x-font-woff");
  echo file_get_contents("file-name.woff");
?>

使其通用并以这种方式提供所有文件:

<?php
  ob_start();
  header("Content-type: application/x-font-woff");
  echo file_get_contents("{$_GET["file"]}.woff");
?>

并将其命名为:font.php?file=file-name。希望这有帮助。

此外,要将 CORS 合并到 PHP 文件中:

<?php
  header("Access-Control-Allow-Origin: *");
  ob_start();
  header("Content-type: application/x-font-woff");
  echo file_get_contents("{$_GET["file"]}.woff");
?>