【问题标题】:How does the 'ASP.NET Core with angular' template work with external requests?'ASP.NET Core with angular' 模板如何处理外部请求?
【发布时间】:2022-01-21 16:58:40
【问题描述】:

我遇到了 CORS 问题,并且无法调试该问题。我面临的一个问题是我不知道它是前端还是后端问题。我的理解是从启动开始,前端将被启动,在我的例子中是 localhost:44490。后端也将在另一个 localhost(在我的例子中为 localhost:7275)上启动,您可以在前端的 proxy.conf.js 文件中配置代理。所以在我的例子中,点击 localhost:44490/api/task 会重定向到 localhost:7275/api/task。这一切都很好,并且按预期工作。

但是,我在后端发出外部请求(天蓝色广告身份验证)并收到 CORS 错误消息:

从源访问“https://login.microsoftonline.com/hiding-this-part-of-the-url”(重定向自“https://localhost:44490/api/task”)上的 XMLHttpRequest https://localhost:44490' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

这对我来说表明请求实际上是由运行前端 Angular 应用程序的本地主机发出的。这似乎得到了我的后端设置为启用所有 CORS 的事实的进一步支持

builder.Services.AddCors(options =>

{

    options.AddPolicy("AllowAllOrigins",

    builder =>

    {

    builder.AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin();

    });

});

.....

app.UseCors("AllowAllOrigins");

所以我只是在寻找有关其实际工作原理的详细信息,因为我完全认为来自后端的请求将来自后端正在运行的本地主机(本地主机:7275),但事实并非如此好像是现实?

我真正能找到的与此相关的唯一支持文档是:

https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-net-6-preview-4/

但这并没有真正解决我的困惑。

【问题讨论】:

    标签: .net angular asp.net-core


    【解决方案1】:

    据我了解,您似乎是这样做的:

    在 Angular 应用程序中,您要求您的 api 获取 azure 广告登录页面。

    您的 api 发送 [redirect to azure ad login] 作为响应。

    您的页面收到重定向响应,并且您的浏览器开始重定向过程:

    • 启动预检请求(方法 OPTIONS),向 azure 登录服务器询问信息。
    • 来自此预检的响应的标头带有或不带有 Access-Control-Allow-Origins 键。
    • 如果该值包含您的 url,则浏览器启动真正的请求,请求 azure 登录页面并显示它。

    换句话说:

    客户端请求您的 .Net Api => 您的 .Net api 返回一个重定向响应 => 客户端接收重定向并开始重定向过程。

    您可以在这里看到这是处理请求的客户端,而不是您的后端。

    【讨论】:

      猜你喜欢
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-15
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多