Javascript 在Chrome中使用XMLHttpRequest获取对URL的查询

Javascript 在Chrome中使用XMLHttpRequest获取对URL的查询,javascript,google-chrome-extension,coffeescript,Javascript,Google Chrome Extension,Coffeescript,我正在尝试直接使用XMLHttpRequest检索url: req = new XMLHttpRequest req.onreadystatechange = -> console.log req.readyState if req.readyState == 1 console.log "sending..." req.send if req.readyState == 4 handler(req.response, req.status) req.

我正在尝试直接使用XMLHttpRequest检索url:

req = new XMLHttpRequest
req.onreadystatechange = -> 
  console.log req.readyState
  if req.readyState == 1
    console.log "sending..."
    req.send
  if req.readyState == 4
    handler(req.response, req.status)
req.open("GET", info.srcUrl, true)
req.responseType = "arraybuffer"

但我从未看到对象在
1
readyState之外转换。我缺少什么?

如果您试图从接收运行脚本的服务器以外的其他来源检索任意资源,则很可能遇到与跨站点脚本相关的安全问题

除非在非常有限的情况下,否则您无法从任何其他站点检索资源,只能从为您当前查看的页面提供服务的站点检索资源

有关说明,请参阅

有关我上面提到的有限情况,请参见

此外,由于您似乎没有为XMLHTTPRequest提供错误处理程序,因此很可能丢失了错误消息,该消息会通知您请求失败的原因

使现代化
关于XMLHTTPRequest的快速教程,包括如何处理onError事件,可以在Ruby的上找到,我没有意识到
req.send
req.send()之间有细微但重要的区别。正如@RobW在评论中指出的,此方法也不应在事件处理程序中调用,而应在代码末尾调用。

运行此操作的页面的源url是什么,以及info.srcUrl的值是什么?是否从与运行此代码的页面相同的主机名/端口检索内容?否,这是对任何web服务器的任意请求。具体来说,我是在处理图像,但这不重要。@jabalsad-为什么这不重要?浏览器不允许您这样做。但是,如果您想要图像,请使用图像标记,它会让您这样做。@Hogan我不一定要在浏览器上显示图像。我试图从url中检索资源并以某种方式操纵数据。哎呀,我忘了提。我是通过chrome扩展来做这件事的,我给了https://*/和http://*/权限。谢谢你关于错误处理程序的介绍,这可能是我错过的。这很奇怪,因为当我使用jQuery.get()方法时它会工作。也许你可以告诉我应该在哪里进行错误处理?我在文档中没有看到提到它的例子。@jabalsad如果在模式末尾附加一个通配符
http://*/
仅匹配网站的根目录,
http://*/*
匹配所有http网站。请看。@RobW那么jQuery.get()如何成功呢?@RobW我理解CORS背后的概念。我的观点是,使用jQuery.GET或jQuery.ajax的GET请求成功,但如果我直接使用XMLHttpRequest对同一URL执行请求,则不会成功。这似乎与CORS无关,因为jQuery只是XMLHttpRequest的包装器?