具有标识的 ASP.NET 中的 CORS 策略

Posted

技术标签:

【中文标题】具有标识的 ASP.NET 中的 CORS 策略【英文标题】:CORS Policy in ASP.NET with identity 【发布时间】:2021-09-30 10:05:59 【问题描述】:

我将 API 发布到 IIS 服务器,尽管有一个功能,但一切正常:

只有当我们在 localhost 上测试函数时才会出现错误,但如果我使用邮递员,一切正常。 这是我代码中唯一使用 Cors 的地方: 我该怎么做才能允许在 localhost 上发送 sendind 请求?

【问题讨论】:

它通过邮递员工作,因为 CORS 是浏览器实现的东西。 developer.mozilla.org/en-US/docs/Web/HTTP/CORS 是关于这个主题的好读物。所以基本上它告诉你令牌服务不允许你称之为跨域。 CORS 是浏览器检查的响应标头。 1. 浏览器向令牌服务发送请求 2. 令牌服务响应。 3. 浏览器检查是否允许 CORS。 4. 第 5. 失败。 所以基本上 Token 服务有它自己的 CORS 策略? 正确,或者更确切地说,可能,无。您可以检查网络选项卡中的响应以查看它是否具有 CORS 标头 【参考方案1】:

它通过邮递员工作,因为 CORS 是浏览器实现的东西。这也是为什么某些调用可能会通过旧 IE 版本运行的原因。 Postman 不检查 CORS 标头,因此不在乎。 CORS 是为了防止 XSS(我相信)。

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS 是很好的阅读主题。

跨域资源共享 (CORS) 是一种基于 HTTP 标头的机制,它允许服务器指示浏览器应允许从其加载资源的任何其他来源(域、方案或端口)。

所以基本上它告诉您令牌服务不允许您将其称为跨域。CORS 是浏览器检查的响应标头。

    浏览器向令牌服务发送请求 令牌服务响应。 浏览器检查是否允许使用 CORS。 没有。 “请求”失败。

TLDR; CORS 是一个响应头,浏览器检查是否允许响应通过给您。标头必须由您调用的服务设置。

【讨论】:

我在这里找到了一些其他答案:***.com/questions/36285253/… 基本上它是说我只需要启用一次 cors,但它不适用于我的情况。你知道为什么吗? 仅仅为您的网络服务启用它是行不通的。这只是意味着其他人可以从任何域(或 *)调用您的 Web 服务。令牌服务需要允许 CORS。 (至少据我所知)。您拥有令牌服务吗?如果是这样,请尝试在本地进行旋转。浏览器将允许调用 localhost(同一域)。标头必须由您调用的服务设置。 您可以尝试使用 --disable-web-security 标志启动 Chrome(如果您使用的是 Chrome)。见***.com/questions/3102819/…

以上是关于具有标识的 ASP.NET 中的 CORS 策略的主要内容,如果未能解决你的问题,请参考以下文章

仅在文件上传中出现 Asp.Net Core API CORS 策略错误

在 ASP.NET Core 3.1 中处理多环境的 CORS 策略

带有 Vue JS 的 ASP.NET Core 5 从源访问 XMLHttpRequest 已被 CORS 策略阻止

asp.net core 2.1 跨域策略。添加为 CORS 时,只有单个 url 有效

azure 应用服务和 asp.net 核心:CORS 策略甚至 AllowAnyOrigin 也阻止了来源

使用 SIGNAL R 的 Angular 7 和 ASP.NET Core 2.2 的 CORS 策略问题