【问题标题】:CORS Client-Side vs Server-Side [closed]CORS客户端与服务器端[关闭]
【发布时间】:2020-12-20 04:12:21
【问题描述】:

我目前正在开发一个简单的 React 应用程序,它唯一的工作是从 JSON 端点获取一些数据,将其返回并呈现到屏幕上。我正在使用axios 发出客户端请求。我有几个不同的场景,希望社区可以帮助我提炼。

如果我从我的应用程序向JSONPlaceholder 上托管的端点发出请求,它:

  1. 允许我这样做
  2. 设置Access-Control-Allow-Origin 响应标头(可能基于Origin 请求标头)

以上一切都很好。同样,如果我向托管在 S3 存储桶上的端点发出请求(坦率地说,我不确定访问控制),由于 CORS(再次,大概是因为上述访问控制设置在资源)。

当我转到 Node 应用程序并改用 node-fetch 之类的东西时,我能够发出请求,没问题。

我知道这是一种浏览器级别的保护,但我之前在这里阅读了一篇文章,其中提到如果运行多个跨域请求加载网站,它如何保护网站免受 DDoS 攻击。

我有点理解这一点,但是如果我启动一些机器并让它们都运行一些 Node.js 代码,这些代码也会对某些服务器执行许多 GET 请求,那么是什么阻止我做同样的事情?

另外,任何 CORS 保护问题是否通过简单地从服务器发出调用绕过?

【问题讨论】:

    标签: javascript web cors


    【解决方案1】:

    如果您正在构建 API 并且不希望每个人都能够访问该 API,那么第一件事就是添加 CORS 规则。但这只能防止来自浏览器的 API 调用。为了正确保护您的 API,您必须实施 RATE LIMITING、使用 API 密钥、JWT、客户端 ID/秘密的访问控制。

    另外,是否可以通过简单地从服务器进行调用来绕过任何受 CORS 保护的问题?

    CORS 规则由浏览器强制执行,因此如果您从 Web 服务器或 Postman/SOAPAPI/等应用程序进行 API 调用,则不会强制执行任何 CORS 规则。

    【讨论】:

    • 显然问题不够好,但感谢您的回答!现在对我来说更有意义了。
    猜你喜欢
    • 1970-01-01
    • 2011-11-16
    • 2011-01-19
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2019-03-18
    相关资源
    最近更新 更多