【问题标题】:Is there a way to enable CORS on an Azure Virtual Machine?有没有办法在 Azure 虚拟机上启用 CORS?
【发布时间】:2023-10-09 03:39:02
【问题描述】:

有没有办法在 Azure 虚拟机上启用 CORS? 我在 localhost:5001 运行烧瓶,在 localhost:4200 运行 Angular 应用程序 在我当地的环境中,它完美无缺。但是,在 azure 上的虚拟机实例中它不起作用,因为我无法设置我的 CORS。

【问题讨论】:

    标签: azure cors azure-api-management


    【解决方案1】:

    要在 azure 中启用 CORS,我们需要按照以下步骤在 API 中配置策略。

    1.添加 azure 门户中所需的 API

    • 在您部署的应用程序中应用以下更改 iis 如果尚未在 Web.config 文件中完成。

       
    
     <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Access-Control-Allow-Origin" value="*" />
                <add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS" />
                <add name="Access-Control-Allow-Headers" value="Content-Type" />
            </customHeaders>
        </httpProtocol>
        </system.webServer>

    要查看如何转到 web.config 文件,您可以参考 this Link to Configure CORS in azure

    2。转到 API >> 点击所有操作 >> 添加策略

    - 在那里你可以看到 cors。点击它。

    -然后点击保存

    - 您需要导航到入站策略并检查是否有 添加了这个元素。

    • 您可以直接在表单编辑器或代码编辑器中进行编辑,如下所示:

    • 此示例演示如何支持飞行前请求,例如 具有自定义标头或方法的那些。支持自定义标题和
      附加 HTTP 动词,使用 allowed-methods 和 allowed-headers
      部分,如以下示例所示。 - 如果您的服务支持任何域的 COR,则将“*”作为 如下图

    (或)

    • 如果您希望 cors 只需要几个特定的​​ URI 来调用您的服务,您 可以将它们添加到原始标签中,或者您可以使用直接填写表格 表单编辑器。您可以添加服务所需的方法。

    您可以参考this Document了解更多信息。


    您可以启用 Access-Control-Allow-Credentials 标头。当您需要发送 cookie 或令牌作为调用 API 的一部分时,这是必要的 >> Reference


    (或)

    • 在 Cloud Shell 中,使用 az 为您的客户端 URL 启用 CORS webapp cors add 命令。替换占位符。

    在 AZURE CLI 中:

    webapp cors add --resource-group myResourceGroup --name <app-name> --allowed-origins 'http://localhost:5000'
    
    • 您可以在其中设置多个客户端 URL properties.cors.allowedOrigins ("['URL1','URL2',...]")。你也可以 使用“['*']”启用所有客户端 URL。 您可以参考this 了解更多信息。

    其他参考:

    1. Troubleshoot CORS error
    2. app-service-api-cors-consume
    3. Code examples-CORS
    4. App-service-web-tutorial-rest api
    5. CORS proxy
    6. Azure CDN with CORS

    【讨论】: