最近Apache服务器不能加载某些资源,是个CORS问题,就是跨域。报错如下:

Access to Font at 'http://nanny.com/fonts/fontawesome-webfont.ttf?v=4.6.1' from origin 'http://www.nanny.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.nanny.com' is therefore not allowed access.

这可能是Apache的配置问题,也可能是Yii2 controller的问题。

网上说很多人说在.htaccess文件中加一句Header set Access-Control-Allow-Origin "*"即可,加了,没用。

暂时还不知道具体问题何在。 5/31/2018

暂时按照下面这个解决方案搞定了,但这是在每一个Controller下面多写几行代码,如果能从Apache层面搞定就好了。 6/3/2018

class MyController extends Controller
{
    public function behaviors()
    {
        return [
            'corsFilter' => [
                'class' => \yii\filters\Cors::className(),
            ],
        ];
    }

在apache的.htaccess里写配置信息还是非常好的,因为可以解决全部路由的cors问题。5/31/2018

.htaccess里写了如下配置就搞定了:

<FilesMatch ".(eot|otf|svg|ttf|woff2?)$">
    Header set Access-Control-Allow-Origin "*"
</FilesMatch>

其实这个问题可以在多个层面上解决的,看这个帖子:

标签: apache, cors

添加新评论