如何向隐藏在 Azure Web 代理后面的应用发送 POST 请求?
Posted
技术标签:
【中文标题】如何向隐藏在 Azure Web 代理后面的应用发送 POST 请求?【英文标题】:How do I send a POST request to an app hidden behind Azure Web Proxy? 【发布时间】:2021-10-04 08:02:30 【问题描述】:我正在尝试与隐藏在 Azure Web 代理/Active Directory 设置后面的应用程序通信。
到目前为止,我已经尝试了以下方法:
用 Ionic (Angular) 编写应用程序
设置 Ionic 的 AuthConnect 插件,以便我能够从 AD 获取访问令牌
在this link 似乎建议的“授权”标头中设置访问令牌
发送与任何其他 API 都可以正常工作的 POST 请求,而不是 Web 代理背后的那个
尝试在服务器端设置 IIS CORS 模块。我在下面附上了当前配置的图片。
当我尝试向 Web 代理应用 URL 发送 POST 请求时,我在预检请求中收到 403 禁止错误。
我收到错误“从源 'http://localhost:8100' 访问 'https://www.testurl.com/test' 的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应没有'未通过访问控制检查:请求的资源上不存在 'Access-Control-Allow-Origin' 标头。"
有人能指出我正确的方向吗?任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:您可能会遇到 CORS(跨域资源共享)问题。您应该尝试在您使用的任何浏览器中关闭 CORS。此外,正如错误声明所说,“请求的资源上不存在 'Access-Control-Allow-Origin' 标头”,您应该检查您向 Web 代理应用程序 URL 发送 POST 请求的域或站点,并且是否为您的 Web 代理资源禁用/绕过 CORS。尝试仅从您的域发送 POST 请求,而不是从外部或启用了 CORS 的其他域发送。
另外,您可能正在从没有安装 SSL 证书的“http”网络服务器发送 POST 请求,因此请尝试在本地主机上安装 SSL 证书,然后发送 POST 请求。
您还可以检查应用程序虚拟目录权限以访问网络代理资源并纠正可访问性,因为您在访问网络应用程序页面时收到了禁止的 403 错误。
有关您的问题的更多说明,请参阅以下主题:-
Response to preflight request doesn't pass access control check
Access to XMLHttpRequest has been blocked by CORS policy
How does Access-Control-Allow-Origin header work?
谢谢你,
【讨论】:
以上是关于如何向隐藏在 Azure Web 代理后面的应用发送 POST 请求?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用代理从 Cosmos SDK .Net 连接到 Azure Cosmos?