CORS 问题:前几分钟出现 500 内部服务器错误

问题描述 投票:0回答:1

我的申请有问题。 大多数时候当我打开应用程序时,它在前几分钟无法检索数据(仅发生一次);抛出 500 错误 - AxiosError .. 网络错误。

预检返回“Access-Control-Allow-Origin: *” 但请求失败并出现 500 错误:从源“https://”访问“https://”处的 XMLHttpRequest 已被 CORS 策略阻止:请求中不存在“Access-Control-Allow-Origin”标头资源。

几分钟后突然就可以正常工作了。

我注意到请求时间略有不同。我认为它没有等待预检完成? enter image description here enter image description here

服务器上没有日志或失败的请求。

CORS 后端没有任何变化,但我不确定网络。

我总是通过邮递员收到 200 回复并且从来没有任何问题。

azure asp.net-core cors
1个回答
0
投票

CORS 是一种安全机制,用于防止跨站请求伪造 (CSRF) 等事件。它仅适用于连接到 Web 服务器的客户端是浏览器(通常由人类用户操作)的场景。

浏览器将

Origin
HTTP 标头及其请求发送到服务器。来源与您来自的 URL 中的域相关。然后,服务器根据其 CORS 策略验证该域,以确保请求来自受信任的来源,而不是攻击者为尝试冒充受害者用户在服务器上执行活动而设置的恶意网站。

在客户端是应用程序而不是人类的场景中,原始 http 标头很少相关,因此 CORS 不适用。

我可以看到您正在开发人员工具中对此进行测试,但您没有包含如何生成对服务器的 Web 请求的详细信息。如果您有一个带有表单和按钮的本地 html 文件来发出请求,则将使用 origin 但为空,这可能会导致此错误。

在 Postman 中,您可能会看到您的请求没有任何原始标头。这可能就是为什么它每次都能正常工作的原因。

500 是服务器特定的 HTTP 状态代码。如果服务器上没有失败的请求,那么您可能需要启用失败的请求跟踪或其他服务器级别日志记录,具体取决于后端的 Web 服务器类型。

© www.soinside.com 2019 - 2024. All rights reserved.