【问题标题】:Azure Automation jobs breaking VM-located application REST requestsAzure 自动化作业中断位于 VM 的应用程序 REST 请求
【发布时间】: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


【解决方案1】:

如果您使用沙盒类型的设置而不是混合工作程序来执行,那么由于沙盒是 Windows 操作系统的受限版本,并且 cookie 和网络配置等用户行为可能不一样,所以我建议您尝试一下混合工作者(默认在本地系统上下文下运行)来查看是否可以获得一些更好定义的行为。

【讨论】:

  • “沙盒”? - 带有 REST 调用的代码在 Win VM 上运行。此外,是否需要通过自动化帐户运行,而不是本地或混合 - 测试的意义何在?如果在 Azure 自动化帐户服务主体下运行,这可能是一个网络/安全问题,http/REST 流量会被过滤吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 2015-11-03
  • 1970-01-01
  • 2015-08-27
  • 2018-05-14
相关资源
最近更新 更多