【发布时间】:2020-05-05 16:28:21
【问题描述】:
我有一个应用程序 (VBS),它通过 xmlhttp REST 请求从第三方网站提取数据。
此应用程序的第一个 REST 调用是对一个登录 URL,该 URL 还返回一个 JSESSIONID cookie('Set-Cookie: JSESSIONID=7XYZD; Path=/; Secure; HttpOnly ')。 调用的 URL 是'https://www.bullionvault.com/secure/j_security_check?j_username=XXX&j_password=YYY'。
第二个请求需要我登录,它从该网站的另一个 URL 提取实际信息,将数据作为 XML 文档响应返回为“.responseXML em>'。如果我在 VM (rdp) 上工作时执行应用程序,或者从我的笔记本电脑本地执行应用程序,此流程就可以正常工作。
现在,当我使用 Azure 自动化 作业在 VM 上触发完全相同的应用程序时,第二个(数据)请求不再返回预期的 XML 文档;我得到“200 OK”,但随后网站的(无用)登录页面作为 HTTP 文档作为“.responseText”; '.responseXML' 为空。
似乎使用 Azure 自动化作业会阻止 JSESSIONID 在执行数据请求时被发送回 REST 服务器。因此,服务器不再识别我,并将其发送回其登录页面。请注意,没有明确涉及网络浏览器。
问题:我怀疑使用 Azure 自动化破坏了应用程序是否属实?以及如何解决这个问题?
【问题讨论】:
-
请注意,当我通过 Azure 自动化帐户作业触发相同的应用程序时,没有像 'Set-Cookie: unitOfWeight=KG; 这样的 cookie; Path=/' 不再出现在登录请求的响应标头中。后续xmlhttp数据请求失败;而不是预期的数据 XML,我得到登录页面的 html 作为请求响应文本。似乎 JSESSIONID cookie 被过滤掉了。问题似乎是 AAC 服务主体的使用。
标签: azure xmlhttprequest virtual-machine azure-automation jsessionid