我刚刚将我的应用程序移动到生产服务器并在尝试使用“www”访问页面时出错 当我尝试将页面加载为“http://example.com”时,它会正确加载页面和内容,当我尝试访问“www.example.com”这样的页面时,我的所有ajax调用都会出现如下错误:
XMLHttpRequest无法加载http://example.com/dashboard/。没有 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许来源“http://www.example.com” 访问。
我正在使用PHP角色。
答案 0 :(得分:1)
您的网站是否使用www并且没有相同的方式?如果没有,也许你可以添加重写规则到htaccess这样的版本与www和没有它将以同样的方式服务?在这种情况下,您不应该遇到跨域错误
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
答案 1 :(得分:0)
发生此问题是因为您尚未在服务器端设置访问控制源。您可以通过在服务器端设置
来解决此问题header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");
答案 2 :(得分:0)
当您从浏览器发出请求时,浏览器会在任何一种情况下执行预取(有时它不会),它会检查Access-Control-Allow-Origin
是否实际允许您的客户的网站提出不同的请求域(网络安全的东西)。如果这与您发送请求的位置不匹配,浏览器会阻止请求并且不会发送请求。
要发出请求,您需要编辑服务器端(在PHP上),您应该允许该域,它还支持通配符:
<?php
header("Access-Control-Allow-Origin: www.example.com");
?>
现在您可以从任何地方开始发出请求,您也可以将请求限制到特定域,以便只有一个域可以向您发送请求,如:
header("Access-Control-Allow-Origin: example.com");
答案 3 :(得分:0)
这是可以预料的。 Same Origin Policy州:
如果两个页面的协议,端口(如果指定了一个端口),和主机相同,则两个页面具有相同的来源。
www.example.com
和example.com
是不同的主机名,因此您可以跨越起源。
虽然口语是指跨域请求,但它是重要的跨域请求;跨域请求只是其中的一部分。
不要将您的网站托管在多个主机名上,选择一个并坚持使用它。 (您可能希望设置从另一个重定向到它)。
使用相对而不是绝对URI也会减少出现这种错误的可能性。