gpt4 book ai didi

azure - 为部署在启用身份验证的 Azure Web 应用服务中的 Web api 启用 CORS

转载 作者:行者123 更新时间:2023-12-02 06:45:39 25 4
gpt4 key购买 nike

我在 CORS 方面遇到了这个奇怪的问题,如果我关闭我的 Azure Web 应用程序服务中的身份验证,它就会起作用。

设置:

  1. Web API 通过来自不同共享点在线站点的页面进行访问。
  2. API 部署在 Azure APP 服务中。身份验证已启用。
  3. 我配置为通过 global.asax 全局添加 header 。

       Context.Response.AddHeader("Access-Control-Allow-Origin", "*");
    Context.Response.AddHeader("Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept,MaxDataServiceVersion");
    Context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
    Context.Response.AddHeader("Access-Control-Allow-Credentials", "true");

结果:

  1. 我尝试禁用身份验证。当然,这不会发生在现场。但请求成功,CORS 并没有阻止任何内容。
  2. 我重新启用了身份验证,CORS header 已添加到 API URL,但整个请求不起作用,因为来自默认 Microsoft 登录的身份验证 URL 被阻止。

我确实允许所有来源只是为了查看是否添加了 header ,但它始终以某种方式阻止身份验证 URL。

有人遇到过这种情况吗?还是我在某个地方缺少设置?

提前致谢。

最佳答案

I think you cannot define multiple origin site via the web config? Is there a way to do this just with web. config or a custom code is needed to achieve this?

我们可以通过 Azure 门户轻松为 Azure WebApp 启用 CORS。您可以使用 * 来允许所有源进行跨源调用。我们可以从此tutorial获取有关azure webapp CORS的更多信息.

Cross-Origin Resource Sharing (CORS) allows JavaScript code running in a browser on an external host to interact with your backend. Specify the origins that should be allowed to make cross-origin calls (for example: http://example.com:12345). To allow all, use "*" and remove all other origins from the list. Slashes are not allowed as part of domain or after TLD.

enter image description here

更新:

这是 Azure 门户的已知限制,将来应该修复。

正如您提到的,关于 CORS 的允许凭证。如果您使用门户 CORS 功能,则不支持,但如果您禁用它(通过删除其中的所有域),您可以在代码中处理 CORS 并对其进行自定义

更多信息请引用此blog .

关于azure - 为部署在启用身份验证的 Azure Web 应用服务中的 Web api 启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52466362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com