如果来源不在允许的来源列表中,服务器应如何响应CORS请求?

时间:2014-11-19 14:17:04

标签: javascript web cors

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

1 个答案:

答案 0 :(得分:1)

Cross Origin Resource Sharing是“选择加入”,这意味着如果您愿意启用它,则只在您的回复中添加CORS标头。如果您没有设置CORS标头,浏览器会使某些攻击变得更难,但您仍然需要保护后端服务器免受Cross-Site Request Forgery (CSRF)的攻击。<​​/ p>

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

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

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