这是我的代码,
var links = document.getElementsByTagName("a");
for(var i = 0 , max = links.length ; i < max ; i++){
var refLinks = links[i].href;
var xhr = new XMLHttpRequest();
xhr.open('GET',refLinks, true );
xhr.onreadystatechange=function() {
console.log("HTTP Status Code:"+xhr.status);
}
xhr.send(null);
}
现在在控制台中我得到的xhr.status对于大多数链接都是0,而那些不是断开链接而200只是少数几个链接。我试过的网站是http://www.scientificamerican.com/。
请帮助。
答案 0 :(得分:0)
阅读浏览器的JavaScript控制台。
您将看到以下信息:
XMLHttpRequest无法加载
http://www.scientificamerican.com/
。 No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。起源&#39; http://null.jsbin.com&#39;因此不允许访问。 runner-3.27.4.min.js:1 HTTP状态代码:0
网站not allowed是为了吸引用户&#39;浏览器(使用用户的IP地址和cookie)从任意网站获取数据并使其可供JS使用。那将是一个可怕的安全问题。网站可以为其他网站提供explicit permission以使用JS访问其数据。
答案 1 :(得分:0)
XMLHttpRequest无法加载http://www.scientificamerican.com/。 No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上......
但他仍然存在一种绕过&#34;绕过&#34;带有简单PHP脚本的CORS。
这是HTML:
<?php
// Simple use of file_get_contents function
function loadHTML($url) {
return file_get_contents($url);
}
// Test if we got parameters
if(count($_GET) > 0) {
// Test if url param
if(isset($_GET['url']) && strlen($_GET['url']) > 0) {
$html = loadHTML($_GET['url']);
$param = parse_url($_GET['url']);
$http_domain = "http://".$param['host'];
$find = array(
'src="'
,'href="'
);
$replace = array(
'src="'.$http_domain
,'href="'.$http_domain
);
// Why use str_replace
// Example : In $html, we got : <img src="/image/test.png" />
//
// We have to write the domain for using this image
//
// After : we got : <img src="http://example.com/image/test.png" />
// We see the image
//
// It work for script, link, img, iframe, etc...
echo str_replace($find, $replace, $html);
}
}
?>
这是PHP:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="path/to/your/file/styles.css">
</head>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>
希望这会有所帮助,你可以将它用于你的。
抱歉我的英文