考虑我已经创建了一个网站并拥有这样的网络目录......
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,其他网站的任何人都可以访问我的网站?
如果有人可以帮助我,我将不胜感激,谢谢你...
答案 0 :(得分:3)
http://www.website.com
和http://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]