http://www.website.com和http://website.com之间有什么区别?

时间:2014-12-11 12:32:45

标签: php jquery http web cors

考虑我已经创建了一个网站并拥有这样的网络目录......

1.index.php

2.ajax.php

在index.php编码中..我使用

<html>
....
<base href="http://website.com">
....
....
<script> <!-- using jquery -->
.... 
$.ajax({
        url:'ajax.php',
        type:'POST',
        data:{ 'variable': value  },
        success: function(res){
        ....
        ....    
        }
    });  
....
</script>

当我运行上面的代码它工作正常...但是当我在基本元素href属性中添加“www”时,就像这样......

<base href="http://www.website.com">

它不工作为什么?,它在javascript中显示如下错误..

阻止跨源请求:同源策略禁止在http://example.com/ajax.php读取远程资源。这可以通过将资源移动到同一域或启用CORS来解决。

现在我有疑问?

  1. 真正的问题是什么?

  2. 我应该怎样做才能使两个基本元素代码都运行?

  3. 什么是CORS启用?

  4. 如果我启用CORS,其他网站的任何人都可以访问我的网站?

  5. 如果有人可以帮助我,我将不胜感激,谢谢你...

2 个答案:

答案 0 :(得分:3)

  

http://www.website.comhttp://website.com之间有什么区别?

他们有不同的主机名,并且(技术上)是不同的网站。他们可以托管不同的内容,但可能不会。

  

真正的问题是什么?

不同的主机名是不同的起源。浏览器不允许在一个源的页面中运行的JavaScript从另一个源读取内容,除非CORS给出了权限。

  

我应该怎样做才能使两个基本元素代码都运行?

选择两个主机名中的一个作为规范。配置服务器,以便非规范的服务器向规范的服务器发出301 HTTP重定向。

在此期间,请停止使用<base>。它的痛苦远远超过它的价值,几乎所有关于它的好处都可以通过使用相对于服务器根目录的URL(即以/字符开头的URL)来实现。

  

什么是CORS启用?

配置服务器以发送HTTP标头,授予浏览器与其他网站共享您网站数据的权限。

有关详情,请参阅MDN

  

如果我启用CORS,其他网站的任何人都可以访问我的网站吗?

您可以指定全局访问权限或将其限制为特定来源。

答案 1 :(得分:0)

基本上,“www。”是一个子域,在技术上与根目录不同。您可以在子域“www。”上运行完全不同的网站,尽管大多数托管服务提供商都会自动设置DNS以重定向子域“www”。到根文件夹(或其他方式)。您可以使用包含以下内容的.htaccess文件自行完成此操作:

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