【问题标题】:Javascript in browser IS able to use sockets/get info from web by itself?浏览器中的 Javascript 是否能够自行使用套接字/从网络获取信息?
【发布时间】:2011-11-27 15:56:33
【问题描述】:

是否可以在 JavaScript 中打开套接字并从 Web 获取数据。

我的目标是:使用 JS 处理网络数据。 我一直在寻找XmlHttp/AJAX解决方案,但是我发现了一个注释,AJAX只能用于调用localhost程序,它将用作代理,然后只从网络返回数据。

这是因为浏览器中的沙盒模型,它不允许通过 JavaScript 处理套接字/其他站点,它只能在 localhost 中工作。

有没有 JS 与其他世界合作的解决方案?

【问题讨论】:

  • Ajax 不限于'localhost'
  • open 方法只能从 localhost 调用其他程序,从 tcp/ip 获取信息并在 js 中返回数据,因为浏览器安全,不是吗?
  • 不限于本地主机。仅限同源。

标签: javascript ajax sockets browser xmlhttprequest


【解决方案1】:

您的问题是由于跨域请求安全性造成的,您无法从与当前主机不匹配的域(包括子域)异步获取数据。但是,您可以使用 jsonp,但这依赖于您查询的服务以 jsonp 格式提供数据(以 json 数据作为响应的函数调用)。

如果您无法控制您请求的服务(我假设您没有),您可以使用 javascript 库,例如 YUI 或 jQuery 为您执行跨域请求(通常使用 Flash作为数据代理)。但是,只有当您所讨论的站点允许来自您的域(在 crossdomain.xml 中定义)的跨域请求时,这才有效。

【讨论】:

  • jQuery 和 YUI 不做跨域请求,Flash 也不能(除非跨域服务器上有文档允许这样做)。然而,JSONP 语句是正确的。
猜你喜欢
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
  • 1970-01-01
  • 2014-02-28
  • 2014-02-26
  • 1970-01-01
相关资源
最近更新 更多