我有从外部域“ https://example.com/ABC”访问的MVC应用程序。应用程序中有一些代码使用“ Request.Url.Host”构造用于JQuery调用控制器操作方法的URL。 “ Request.Url.Host”选择内部域“ https://example-internal.com/ABC”。因此,我面临预检问题。我在代码中有很多这样的情况。我尝试了翻译URL“应用程序正文”选项,但没有成功。可以解决此问题吗?
答案 0 :(得分:0)
以下是一些可能的解决方案:
选项1:自定义域 使用Azure AD应用程序代理的自定义域功能,因此您可以使用相同的域名,而无需更改应用程序或标头。因此,原点将继续保持不变。
选项2:发布父目录 发布两个应用程序的父目录。如果您在Web服务器上只有两个应用程序,则此方法特别有效。不必单独发布每个应用程序,而是可以发布父目录,这将导致相同的来源。
应用单独发布
代替发布父目录
生成的URL如下所示,可以有效解决您的CORS问题。
https://corswebclient-allmylab.msappproxy.net/CORSWebService https://corswebclient-allmylab.msappproxy.net/CORSWebClient
选项3:更新HTTP标头 在Web服务上添加HTTP响应标头以匹配Origin请求。例如,下面是如何为IIS上运行的网站进行设置。
这也不需要对准则进行任何更改。您也可以在Fiddler跟踪中对此进行验证。
发布页眉添加 HTTP / 1.1 200 OK 缓存控制:无缓存 语法:无缓存 内容类型:文本/纯文本;字符集= utf-8 过期:-1 有所不同:接受编码 伺服器:Microsoft-IIS / 8.5 Microsoft-HTTPAPI / 2.0 访问控制允许来源:https://corswebclient-allmylab.msappproxy.net X-AspNet版本:4.0.30319 X-Powered-by:ASP.NET 内容长度:17
选项4:应用修改 通过添加具有适当值的Access-Control-Allow-Origin标头,修改您的应用程序以添加对CORS的支持。执行此操作的方法将取决于您编写应用程序所使用的语言。不建议使用此选项,因为它需要更多的精力。