首页 > 解决方案 > Azure 应用程序代理 Cors Prelight 问题

问题描述

我有从外部域“ https://example.com/ABC ”访问的 MVC 应用程序。应用程序中有代码使用“Request.Url.Host”为 JQuery 调用控制器操作方法构造 URL。“Request.Url.Host”选择内部域,即“ https://example-internal.com/ABC ”。因此,我面临预检问题。我在代码中有很多这样的事件。我尝试了翻译 URL “应用程序正文”选项,但它不起作用。有没有办法解决这个问题?

标签: azure-active-directory

解决方案


以下是一些可能的解决方案:

选项 1:自定义域 使用 Azure AD 应用程序代理的自定义域功能,因此您可以使用相同的域名,而无需更改应用程序或标头。因此,原点将继续保持不变。

选项 2:发布父目录 发布两个应用程序的父目录。如果您在 Web 服务器上只有两个应用程序,这将特别有效。您可以发布父目录,而不是单独发布每个应用程序,这将导致相同的来源。

应用单独发布

CORS 应用程序 3

而是发布父目录

CORS 应用程序 4

生成的 URL 如下所示,有效地解决了您的 CORS 问题。

https://corswebclient-allmylab.msappproxy.net/CORSWebService https://corswebclient-allmylab.msappproxy.net/CORSWebClient

选项 3:更新 HTTP 标头 在 Web 服务上添加 HTTP 响应标头以匹配 Origin 请求。例如,下面是如何为在 IIS 上运行的网站设置它。

CORS 应用程序 5

这也不需要对准则进行任何更改。您还可以在 Fiddler 跟踪中验证这一点。

Post the Header Addition HTTP/1.1 200 OK Cache-Control: no-cache Pragma: no-cache Content-Type: text/plain; charset=utf-8 过期:-1 变化:接受编码服务器:Microsoft-IIS/8.5 Microsoft-HTTPAPI/2.0 Access-Control-Allow-Origin:https : //corswebclient-allmylab.msappproxy.net X-AspNet-Version :4.0.30319 X-Powered-By:ASP.NET 内容长度:17

选项 4:应用程序修改 修改您的应用程序以添加对 CORS 的支持,方法是添加具有适当值的 Access-Control-Allow-Origin 标头。执行此操作的方式取决于您编写应用程序所使用的语言。这是最不推荐的选项,因为它需要更多的努力。

参考:了解 CORS 问题


推荐阅读