【发布时间】:2016-05-03 13:31:30
【问题描述】:
我正在尝试使用 JQuery ajax 从不同域的源中检索数据。
我收到一个请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'null'。
例如我想检索整个 DOM,例如堆栈溢出主页。
$(document).ready(function() {
$.ajax({
url: "http://stackoverflow.com/",
success: function(data) {
console.log(data);
$("h1").text("Success => check console");
},
error: function(data) {
console.log(data);
$("h1").text("Error => check console");
}
});
});
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Test</title>
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
</head>
<body>
<h1></h1>
</body>
</html>
我尝试了什么:
- 我在我的 Apache 服务器 (XAMPP) 上运行它。发现我需要设置 .htaccess 需要 Header add Access-Control-Allow-Origin "*" (出于安全原因,应将 Kleene 星号替换为所需的 URI)。我玩了很多不同的 .htaccess
- 所以现在我尝试在没有后端服务器的情况下检索它,纯粹使用我在 sn-p 中提供的代码(从 file:///C:/ 运行它)
编辑
解决了问题(也接受了我的回答,除非有更熟练的人提出更好的解释)并从实际的角度理解情况。
脚注:这个例子只是为了说明问题。在最终的解决方案中,我只想使用 AJAX 将 REST 请求发送到我们 VLAN 中正在运行服务器的另一台 PC。
【问题讨论】:
-
如果除了发送 REST 请求的计算机之外的其他任何人都不需要它,只需安装 CORS chrome 扩展程序以节省混乱。 gyazo.com/166864bc90ca7517f1b82bc150d03c20
-
这是我的队友要求的,仍然只有 10-15 人.. 将把这个选项提供给经理:) 谢谢
-
不是最佳解决方案,但到目前为止是最快的短期解决方案。我在我的 VPS 上使用它来不断更新我的数据库中的 CSGO 武器价格。
标签: jquery ajax cross-domain