CI 3.1.0 base url在使用www.domainname.com和domainname.com打开网站时创建问题

时间:2017-08-23 17:39:57

标签: php codeigniter

这是我定义基本网址的方式:

$config['base_url'] = 'http://royalarcdevelopments.ca';

现在这是一个实时链接,您可以自己测试一下:

如果我使用路径http://royalarcdevelopments.caroyalarcdevelopments.ca打开此网址,它会为两者加载正常!

但是当我使用网址www.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.

现在我知道我的基本网址没有使用www所以它会向我抛出错误!

我的问题是,我们如何修改base URL以便它接受来自每种路径类型的请求!

1 个答案:

答案 0 :(得分:1)

一般来说,同一域的www和非www版本是两个不同的完全限定域。

出于安全原因,某些资源(如您特定情况下的字体)违反了CORS政策 - 这会导致您收到的错误。

一种解决方案是修改您的网络服务器配置,以便为交叉原始请求提供字体文件。

更好的解决方案(也是从SEO的角度来看)将其中一个域重定向到另一个域,因此您只有一个"官方"您网站的域名。这也可以通过Web服务器的配置甚至是Codeigniter代码完成,例如通过一些pre_controller挂钩。这样,当访问者尝试访问您的辅助域名时(让您在特定情况下说出www版本),它会被重定向到您的主域名(非www),并且CORS也不会有任何问题。

尽早重定向:

  • 首先,如果您有权访问Web服务器的配置,请在那里实现重定向;
  • 其次,如果您使用Apache作为Web服务器,请在.htaccess文件中实现重定向;
  • 如果您无法使用上述任何选项,请从应用程序代码中执行此操作。