Access-Control-Allow-Origin和www子域

时间:2011-04-03 16:18:36

标签: jquery codeigniter access-control

我遇到了Access-Control-Allow-Origin的麻烦。我正在使用CodeIgniter(CI)& jQuery进行jQuery.getJSON()调用。我使用CI URL调用jQuery.getJSON()。 CI配置中的基本URL包括域名中的www(www.domain.com)。当我访问该网站时,我没有使用www(domain.com)。因此,当进行jQuery.getJSON()调用时,它使用www url,但它是从非www url调用的。这导致错误:

  

Origin nonwww.domain.com不是   允许的   访问控制允许来源。

你如何处理这个问题?我已经看过很多关于如何处理这些AJAX调用的不同子域的帖子,但我觉得这是不同的。这是相同的网站,但有些人可能会选择使用 www.domain.com ,有些人可能会选择只使用 domain.com

2 个答案:

答案 0 :(得分:0)

我建议您一劳永逸地选择是否需要www在您的网站前,然后相应地设置apache重定向,这将为您节省很多麻烦:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain\.com
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=permanent,L] 

(这会将非www请求重定向到www)

答案 1 :(得分:0)

谢谢@serg。我最终做了你的建议,但只是反过来(重定向所有www到非www)。我也发现了与你提供的代码类似的代码,但它更通用,所以当我想重用它时,我不必更改域名:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]