我正在创建一个个人网页,提取彩票强力球数字并显示它们。除了这一个链接之外,我已经取得了所有成功:
var xmlHttp = null;
xmlHttp = new XMLHttpRequest();
xmlHttp.open( "get", "http://www.powerball.com/powerball/pb_numbers.asp", false );
xmlHttp.send(null);
document.body.innerHTML = xmlHttp.responseText;
我检查了xmlHTTP.status,它是0.但是,使用Live HTTP标头应用程序,我看到请求已发送,并且我确实获得了成功的HTTP / 1.0 200 OK,我的结尾收到了该页面。但是,xmlHTTP对象中没有收到任何内容。没有responseText,只是状态0表示未初始化。
编辑:我在返回标头中看不到Access-Control-Allow-Origin:
指令。如果我受到限制,为什么会这样,因为我来自不同的域?
答案 0 :(得分:0)
您无法使用XHR to read data from different origins。由于请求是作为浏览器的用户完成的,因此可以使用可能对用户进行身份验证的所有内容进行操作,因此可能会检索机密信息(然后您可以使用XHR将其复制到您自己的服务器上)。
有关解决方法的信息,请参阅this stackoverflow question。
答案 1 :(得分:0)
我不确定它是如何工作的,也不是它的能力,但你似乎已经找到了为什么它不起作用的答案。我建议你使用ajax,它很简单,效果很好。
以下是我使用它的示例:
var site = $.ajax({
url: "http://google.com",
type: "GET",
dataType: "html",
async: false
}).responseText;
document.body.innerHTML = site;
祝你好运,
答案 2 :(得分:0)
这里的问题是same origin policy。您将无法使用AJAX从该网站获取任何数据,除非该网站提供JSONP API(即使那时它不是技术上的AJAX)。
您可以使用iframe在某种程度上实现您的目标,但您必须包含整个页面,而不仅仅是相关部分。
如果您需要做的是Web scraping,那么您将拥有一些服务器端代理来执行此操作。
可能对您有所帮助的一些工具:
答案 3 :(得分:0)
跨域ajax的替代方案是: