【发布时间】:2016-03-03 07:41:47
【问题描述】:
我刚刚关注了 CORS 的 PHP 标头,我在这里有一个奇怪的行为,我创建了两个简单的页面 一个页面(content.php)使用端口 1112,另一页面(sample.html)使用我本地机器上的端口 1113 我注意到奇怪的行为 sample.html 试图从 content.php 中检索信息 这是两个页面的代码 示例.html
<!DOCTYPE html>
<html>
<head>
<title>Sample</title>
<script type="text/javascript">
var xmlhttp = new XMLHttpRequest();
function makerequest(serverPage, objID) {
var obj = document.getElementById(objID);
xmlhttp.open("POST", serverPage);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
obj.innerHTML = xmlhttp.responseText;
}
}
xmlhttp.send();
}
</script>
<body onload="makerequest ('http://localhost:1112/content.php','hw')">
<div align="center">
<h1>Sample</h1>
<div id="hw"></div>
</div>
</body>
</html>
和其他页面 内容.php
<!DOCTYPE HTML>
<html>
<head>
<?php
header("Access-Control-Allow-Origin: http://localhost:1113/sample.html");
?>
<title>page1</title>
</head>
<body>
<div style="width: 770px; text-align: left; color: green;">
<h1>Page 1</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod?
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, ?
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.?
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu ?
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in?
culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
</body>
</html>
现在,当我尝试使用 chrome 和 firefox 运行 sample.html 时,即使我在标题中提供原始链接,它也会被阻止 如果我使用 IE 运行它就可以了 为了使它工作,我需要提供与我想要做的不同的标题( * ) 我试图弄清楚为什么它在 chrome 和 firefox 中不能正常工作
这是我从 chrome 获得的错误消息 XMLHttpRequest 无法加载 http://localhost:1112/content1.php。 “Access-Control-Allow-Origin”标头的值“http://localhost:1113/sample.html”不等于提供的原点。因此,不允许访问 Origin 'http://localhost:1113'。
【问题讨论】:
-
不幸的是,我相信无论本地主机如何,您都会遇到 CORS 问题,请考虑尝试使用本地 IP。此外,您可能需要实际配置您的网络服务器以发送标头,CORS 是一些挑剔的东西。此外,对于 Chrome,您需要这些附加标头:Access-Control-Allow-Headers 和 Access-Control-Allow-Methods。
-
CORS 是否只影响本地主机?
标签: javascript php apache cors