http://www.website.com 和 http://website.com 有啥区别?

Posted

技术标签:

【中文标题】http://www.website.com 和 http://website.com 有啥区别?【英文标题】:what is the difference between http://www.website.com and http://website.com?http://www.website.com 和 http://website.com 有什么区别? 【发布时间】:2015-02-09 22:40:52 【问题描述】:

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

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 来解决。

现在我有问题了吗?

    真正的问题是什么?

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

    什么是 CORS?

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

如果有人可以帮助我,我将不胜感激,在此先感谢...

【问题讨论】:

它们是两个不同的域。 一个有 www 子域,因此从外观上看被视为跨域。 【参考方案1】:

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

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

真正的问题是什么?

不同的主机名是不同的来源。浏览器不允许在一个来源的页面中运行的 JavaScript 从另一个来源读取内容,除非获得 CORS 的许可。

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

选择两个主机名之一作为规范。配置服务器,使非规范服务器发出 301 HTTP 重定向到规范服务器。

当您使用它时,请停止使用&lt;base&gt;。这比它的价值要痛苦得多,几乎所有的好处都可以通过使用与服务器根目录相关的 URL(即以 / 字符开头的 URL)来实现。

什么是 CORS?

将服务器配置为发送 HTTP 标头,允许浏览器与其他网站共享您网站的数据。

请参阅MDN 了解更多信息。

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于http://www.website.com 和 http://website.com 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 htaccess 修复重定向链问题

ASP.NET URL 重写

拒绝访问网站文件夹

python:用百分号编码一个网址? [复制]

Unescape字符(元字符和重音符号)

Azure 网站 - 使用 web.config 重写 URL 不起作用