【问题标题】:HTTP request with Windows script host (.hta)带有 Windows 脚本主机 (.hta) 的 HTTP 请求
【发布时间】:2011-04-07 18:27:27
【问题描述】:

我不敢相信我被困在这里,但我似乎无法使用 Windows 脚本主机或简单的 .hta 文件发出简单的 HTTP 请求。

这是我的代码:

<script language="Javascript">
window.onload = function() {
    var http = CreateObject("Microsoft.XmlHttp");
};
</script>

当我启动 .hta 文件时,我收到一个 JavaScript 错误,提示类似 Object Expected.. 这很烦人,因为这是一项微不足道的任务,我无法真正调试它。

知道如何调试这些东西吗?谢谢。

【问题讨论】:

  • 不知道这些信息有多可靠,但这里有一篇 2005 年论坛帖子讨论了这个问题,还有一个声称它有效的例子。 powerbasic.com/support/forums/Forum9/HTML/001007.html
  • @Pekka:但使用 ActiveX 我无法在其他域(仅限本地域)上执行请求,因此我被拒绝访问。

标签: javascript windows http vbscript hta


【解决方案1】:

您的函数只是创建对象然后销毁它。尝试返回外部变量或在函数中执行更多操作。

【讨论】:

    【解决方案2】:

    在我看来你应该使用

    var http = new window.ActiveXObject("Microsoft.XMLHTTP");
    

    或者只是

    var http = new ActiveXObject("Microsoft.XMLHTTP");
    

    在 .hta 文件中,而不是 CreateObject()

    更新:嗨,卢卡!我在 cmets 中没有太多位置,并且可以发布不太好的链接,所以我附加了我的答案:

    您从问题代码中所做的错误是您尝试在 JavaScript 其他语言的元素中使用。在VBScript 中存在CreateObject,但它是VBScript 语言的一个特性。在 JScript/JavaScript 中,您必须改用 new ActiveXObject

    此外,您在 cmets 中多次提到跨域问题,但从未描述过您是做什么的。如果您需要有关此主题的帮助,则应在问题中包含有关您做什么的更多信息。可能您可以在 WSH 或 C 中包含有效的代码并包含相应版本的 .HTA 文件。如果您描述为什么要使用 .HTA 文件而不是 WScript/CScript 或 PowerShell,这也会很有帮助。您想在哪种情况下使用 .HTA 文件?

    【讨论】:

    • 但是当我尝试请求一个不是我的域时,我被拒绝访问......这似乎与浏览器中的行为相同......有没有办法使用本机库来做这个?这应该是可能的。
    • @Luca Matteis:跨域安全问题将通过其他方式解决。例如使用服务器端代理(参见yaldex.com/ajax-tutorial-4/BBL0044.html)。您应该在问题中更准确地描述您的场景,然后才能给您更准确的建议。
    • @Oleg:当然,我知道浏览器沙箱不能执行跨站点脚本,但是 .hta 并不完全是浏览器沙箱……它可以让您通过许多 Windows 进行完全访问控制蜜蜂。我正在寻找的是在浏览器沙箱之外发出 HTTP 请求的 API 调用。我希望这是有道理的……这是一个非常简单的任务。
    • @Luca Matteis:据我了解,.hta 文件的使用可以帮助您仅访问计算机的所有不同本地资源,如注册表、文件系统等。您可以使用new ActiveXObject() 获取任何可编写脚本的ActiveX 控件。但是您不会解决“Microsoft.XMLHTTP”或window.XMLHttpRequest 中存在的跨域安全问题。当然,您还应该遵循 JavaScript 语法,并且不能使用 JavaScript 未知的 CreateObject
    • JavaScript 并不陌生...我可以在我的 .hta 文件之外完美地使用 WScript.CreateObject()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多