这是我定义基本URL的方式:
$config['base_url'] = 'http://royalarcdevelopments.ca';
现在这是一个实时链接,您可以自己测试:
发生的情况是,如果我使用路径http://royalarcdevelopments.ca
打开此 URL,royalarcdevelopments.ca
它对两者都加载良好!
但是当我使用 URLwww.royalarcdevelopments.ca
加载它时,我收到此错误:
(index):1 Access to Font at 'http://royalarcdevelopments.ca/fonts/Poppins-Medium.ttf' from origin 'http://www.royalarcdevelopments.ca' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.royalarcdevelopments.ca' is therefore not allowed access.
现在我知道我的基本 URL 没有使用www
所以它会向我抛出错误!
我的问题是,我们如何修改base URL
以便它接受来自每种路径类型的请求!
一般来说,同一域的 www 和非 www 版本是两个不同的完全限定域。
出于安全原因,某些资源(如特定情况下的字体(违反了 CORS 策略 - 这会导致您收到错误。
一种解决方案是修改 Web 服务器的配置,以便它允许为跨源请求传递字体文件。
更好的解决方案是(也从SEO的角度来看(将其中一个域重定向到另一个域,因此您的网站只有一个"官方"域。这也可以从 Web 服务器的配置甚至 Codeigniter 代码中完成,例如通过一些 pre_controller 钩子。这样,当访问者尝试访问您的辅助域(假设您的特定情况下的 www 版本(时,它会被重定向到您的主域(非 www(,并且 CORS 不再有问题。
尽早重定向:
- 首先,如果您有权访问 Web 服务器的配置,请在那里实现重定向;
- 其次,如果使用 Apache 作为 Web 服务器,请在
.htaccess
文件中实现重定向; - 如果上述选项都不可用,请从应用程序代码中执行此操作。