【问题标题】:Cross domain javascript to access localhost. Possible?跨域 javascript 访问本地主机。可能的?
【发布时间】:2010-05-19 05:34:44
【问题描述】:

出于某种原因,我需要 javascript 来访问本地主机上的网络服务器。这个 localhost 网络服务器在我们的控制之下,所以我们可以在其中运行任何软件。

你会怎么做?我见过像 YQL 这样的东西,但它从互联网访问另一个域。这种访问会导致防火墙等出现很多问题。所以我想访问运行浏览器的同一台计算机。

您将如何使用 javascript 和在 localhost 服务器上运行的任何软件来执行此操作?

此外,javascript 正在从 Internet 站点运行。并且 localhost 服务器不会在与 Internet 网站相同的端口上运行。

这可能吗?我知道跨域限制,但我也看到有一些方法可以解决它们,例如 YQL。 YQL 之类的东西是如何工作的?您将如何重新实现它?

【问题讨论】:

    标签: javascript cross-domain


    【解决方案1】:

    你可以试试JSONP

    在 JSONP 中,您使用动态创建的脚本标签来访问其他域中的内容。 URL 可用于向服务器传递数据,返回的脚本可以调用回调返回数据。据我记得,向 localhost 发出请求没有特殊限制(与文件系统不同),但我可能错了。

    【讨论】:

    • 那么访问本地主机 JSONP 甚至不需要? localhost 和其他域有区别吗?
    • 我的意思是 (AFAIK) localhost 的处理方式与 Internet 域没有任何不同。跨域政策仍然适用。
    【解决方案2】:

    由于是不同的端口,跨域访问的安全限制将适用。

    您可以使用 jQuery 中的 getJSON 调用进行跨域访问:

    http://api.jquery.com/jQuery.getJSON/

    这是一个 IBM 教程,介绍如何通过上面提到的 jQuery 调用(使用 JSONP)完成它:

    http://www.ibm.com/developerworks/library/wa-aj-jsonp1/

    如果您使用的是 IE,您可以通过将您尝试从脚本访问的站点设置为您的受信任站点,将安全设置为“跨域访问数据源”选项来快速制定解决方法。

    【讨论】:

    • 我们宁愿不必做这样的设置,比如把它放在受信任的网站上,也需要它是跨浏览器的
    • 新增跨浏览器解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    相关资源
    最近更新 更多