【问题标题】:How server should respond to the CORS request in case if origin is not in the allowed origins list? [duplicate]如果源不在允许的源列表中,服务器应如何响应 CORS 请求? [复制]
【发布时间】:2014-11-19 22:35:08
【问题描述】:

在我的例子中,客户端从服务器请求的不是简单的 html 页面或 JavaScript,而是调用一些服务器端方法。
这些方法将在服务器上执行一些活动——打印文档、存储到数据库等。 仅当请求的来源在允许的来源列表中时,服务器才应执行这些操作。
否则,服务器应响应客户端该来源不在允许的来源列表中。
如何正确执行? 将响应标头 Access-Control-Allow-Origin 设置为“null”?或者根本不在响应中设置 Access-Control-Allow-Origin 标头?
这种情况下应该设置什么响应码? 200、401、...?

【问题讨论】:

    标签: javascript web cors


    【解决方案1】:

    Cross Origin Resource Sharing 是“选择加入”,这意味着只有在您愿意启用 CORS 标头的情况下,您才可以在响应中添加它。如果您不设置 CORS 标头,浏览器会增加一些攻击的难度,但您仍然需要保护您的后端服务器免受 Cross-Site Request Forgery (CSRF) 的攻击。

    您可以通过检查请求的RefererOrigin 来保护自己,并拒绝请求,例如返回Forbidden 状态。问题是:浏览器会在向您的站点发出请求后查看 CORS 标头,因此如果您碰巧修改了任何内容,即使您告诉浏览器它的来源是不允许的,也会发生这种情况.

    浏览器可能会在发送其他危险动词(DELETEPUTPOST)之前发出OPTIONS 请求,但是您押注浏览器会做正确的事情。此外,任何人都可以使用cURL 等简单工具向您的网络服务器发送任何 HTTP 请求。

    用其他东西保护您的后端服务器,例如仅在请求具有第三方无法猜测的访问令牌时发出命令。如果您不打算与其他域共享您的服务,请在处理之前拒绝任何包含 CORS 标头的请求。

    【讨论】:

      猜你喜欢
      • 2018-07-28
      • 2017-07-31
      • 2018-04-02
      • 2020-12-29
      • 2018-04-27
      • 2015-01-16
      • 2019-12-06
      • 2016-03-15
      • 1970-01-01
      相关资源
      最近更新 更多