如何在JScript中使用最新的可用XMLHttpRequest

时间:2019-05-02 10:56:10

标签: xmlhttprequest jscript chakra

我使用以下命令启动JS脚本:C:\Windows\System32\cscript.exe /nologo //E:{16d51579-a30b-4c8b-a276-0ff4dc41e755},以便使用最新的Chakra引擎。

在我的脚本中,命令WScript.Echo( ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion() + "." + ScriptEngineBuildVersion());输出11.0.19326

我知道这可以提高性能,并且我认为我也可以使用最新的XMLHttpRequest而不是旧的Microsoft.XMLHTTP(我需要responseURL),但是看起来我不是。

有解决方案吗?

1 个答案:

答案 0 :(得分:1)

我的猜测是,加载Chakra引擎的方式是加载不可见的IE实例。但是according to this MDN compatibility table没有支持responseURL的Internet Explorer版本。

编辑:不要使用JScript

通过大量测试,尝试将Edge的Chakra引擎加载到Windows Script Host中,我无法获得任何有效的排列。创建一个htmlfile COM对象,并使用x-ua-compatible强制兼容,并尝试与HTA应用程序(本机并再次与htmlfile COM对象进行相同),尝试创建{{1} }对象,我想不到的任何Windows脚本宿主攻击都不会暴露XMLHttpRequest对象的MSXML2.ServerXMLHTTP.6.0属性。

最好的选择是选择其他语言。在PowerShell中,您可以执行以下操作:

.responseURL

...将会打印

$req = [Net.WebRequest]::Create("https://youtu.be/")
$resp = $req.GetResponse()
$resp.ResponseURI.AbsoluteURI

如果您需要等价于https://www.youtube.com/?feature=youtu.be ,只需添加以下内容:

.responseText

如果您想使用DOM方法解析$ responseText ...

$reader = new-object System.IO.StreamReader $resp.GetResponseStream()
$responseText = $reader.ReadToEnd()

您可以看到original revision of this answer来查看无效的示例。