azure-active-directory - Azure 应用程序代理 Cors Prelight 问题
问题描述
我有从外部域“ https://example.com/ABC ”访问的 MVC 应用程序。应用程序中有代码使用“Request.Url.Host”为 JQuery 调用控制器操作方法构造 URL。“Request.Url.Host”选择内部域,即“ https://example-internal.com/ABC ”。因此,我面临预检问题。我在代码中有很多这样的事件。我尝试了翻译 URL “应用程序正文”选项,但它不起作用。有没有办法解决这个问题?
解决方案
以下是一些可能的解决方案:
选项 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 跟踪中验证这一点。
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 问题
推荐阅读
- python - VS Code 找不到 python 3 解释器
- python - 在python源码末尾存储大数据
- android - Android:windowLightNavigationBar 不工作
- android - FireBase 身份验证 mAuth.createUserWithEmailAndPassword(电子邮件,密码)错误
- javascript - 如何在不更改 Vue 中的 url 的情况下返回 404 错误?
- javascript - “req.user”似乎未解决但不是
- python - 在列表中保留确切的单词并删除其他单词
- java - 在我评论我的函数中的while循环之前,onClick 不起作用
- excel - 使用 ADODB.Recordset 时 VBA 获取实际的第一列
- python - Python:给定一组元素返回其所有排列的集合