gpt4 book ai didi

cors - 对无效 CORS 请求的预期响应是什么?

转载 作者:行者123 更新时间:2023-12-03 21:39:26 33 4
gpt4 key购买 nike

CORS 规范没有说明服务器应如何响应无效的 CORS 请求。例如,如果请求 Origin 无效,则 CORS spec states :“终止这组步骤。请求超出了本规范的范围。”其他错误情况也有类似的语言,例如请求无效的方法或 header 。

如果出现 CORS 错误,预期的响应应该是什么?我了解不同的服务器可能需要不同的行为。但我正在寻找一个标准响应或如果服务器所有者不在乎的话可以接受的响应。

最佳答案

是的,我意识到我正在回答我自己的问题,但无论如何它都在这里。我对此进行了一些研究,似乎行为分为两个阵营:

1) 如果 CORS 请求无效,则返回错误。 这是Java CORS filter 所走的路线项目。这个库返回

  • 400 Bad Request 请求不符合规范
  • 403 Forbidden for invalid origins 或 headers。
  • 405 方法不允许无效方法

  • 2)在响应中返回 CORS 头,让浏览器整理访问细节。 这似乎是更常见的方法,并且被用于 Amazon S3、SoundCloud、FourSquare 和 Spotify 的 API 使用(后两个 API 受益于仅支持简单的 CORS 请求)。在这种情况下,服务器不做任何错误检查,而只是返回支持的源、方法和 header 的 CORS header 。浏览器仍会发出请求,但如果 CORS 响应 header 与用户的请求不匹配,则浏览器会拒绝用户的响应。

    这些方法中的每一种都有其优点和缺点。方法 #1 更接近 CORS 规范,但没有向用户提供有用的调试信息。

    方法 #2 更深入地了解支持的方法和 header 是什么。它也更容易实现,因为无论请求 header 如何,服务器都会返回相同的响应 header 。然而,这是以在服务器端实际执行请求为代价的,即使浏览器会阻止用户的响应。这对于具有副作用的方法(例如 POST、PUT 或 DELETE)可能是不可取的,并强调了 CORS 不应用作身份验证机制的事实。

    (请注意,我上面的研究绝不是详尽无遗的。很难看到许多 API 的真实行为,因为它们要么需要身份验证,要么因其他错误(例如不受支持的方法)而在不同级别阻止请求。)

    关于cors - 对无效 CORS 请求的预期响应是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14015118/

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