在我看来,客户端不是从服务器请求简单的html页面或JavaScript,而是调用一些服务器端方法
这些方法将在服务器上执行一些活动 - 打印文档,存储到数据库等。
仅当请求的来源位于允许的来源列表中时,服务器才应执行这些操作
否则,服务器应响应客户端原点不在允许的原始列表中
怎么做正确?
将响应头Access-Control-Allow-Origin设置为'null'?或者根本不在响应中设置Access-Control-Allow-Origin标头?
在这种情况下应该设置什么响应代码? 200,401,......?
答案 0 :(得分:1)
Cross Origin Resource Sharing是“选择加入”,这意味着如果您愿意启用它,则只在您的回复中添加CORS标头。如果您没有设置CORS标头,浏览器会使某些攻击变得更难,但您仍然需要保护后端服务器免受Cross-Site Request Forgery (CSRF)的攻击。</ p>
例如,您可以通过检查请求的Referer
和Origin
以及拒绝请求,返回Forbidden
状态来保护自己。问题是:浏览器会在向您的网站发出请求后查看的CORS标题,因此如果您碰巧修改了任何内容,即使您告诉浏览器不允许其来源,也会发生这种情况
在发送其他危险动词(OPTIONS
,DELETE
,PUT
)之前,浏览器可能会发出POST
请求,但是您打算在浏览器上做正确的操作事情。此外,任何人都可以使用cURL等简单工具向您的网络服务器发送任何HTTP请求。
使用其他内容保护您的后端服务器,例如,如果请求具有第三方不可访问的访问令牌,则仅发出命令。如果您不打算与其他域共享服务,请在处理之前拒绝包含CORS标头的任何请求。