【问题标题】:Does Same Origin Policy still allows the serverside code to be executed?同源策略是否仍然允许执行服务器端代码?
【发布时间】:2017-01-23 11:33:11
【问题描述】:

我认为 SOP 在发送之前阻止了对其他域的所有请求都符合他们的规则,但我在我的机器上做了一个简单的例子,这并不完全符合我的预期:

1- 我有一个本地服务器监听端口 8000,它将打印发送到/api URL 的 POST 数据。

2- 我有另一个本地服务器,它使用以下脚本为页面提供服务:fetch('http://localhost:8000/api', {method: 'post', body: 'Sending data.'});。我更改了主机名以在浏览器中使用foo.com 访问此页面。

当我访问foo.com 时,我的跨域请求被执行,我可以在 Chrome 开发工具中看到 CORS 错误: No 'Access-Control-Allow-Origin' header is present on the requested resource,但在服务器控制台中仍然收到数据。我认为SOP的存在就是为了解决这类问题。它的工作方式,它只保证你不能得到响应。是这样吗?几乎所有的网络文档都没有这么说。

我错过了什么?还是我的例子错了?

【问题讨论】:

    标签: ajax google-chrome security web cors


    【解决方案1】:

    正如您所说,许多人对同源策略保护的内容以及 CORS 的工作原理存在很大误解。

    请求确实发出了,服务器对其进行处理并创建响应。只有浏览器才能阻止客户端访问结果。这很容易让位于 CSRF 等攻击。

    预检请求也有作用,但要点不会改变,同源策略不会停止请求,它会阻止响应到达浏览器中的调用者。 p>

    【讨论】:

    • 我终于又可以睡觉了,谢谢你的解释。关于飞行前请求,它们的作用是什么?为什么不是所有的东西都是“简单请求”,我绝对不明白它的价值,因为主要的一点是浏览器只是阻止响应。延迟问题是一个比调用将忽略响应的端点更糟糕的问题。
    • 如果其他域进行了DELETE操作,即使客户端无法访问结果,危害是什么?
    • 哇,经过这么多年的编程我都不知道。我知道无论如何都需要向服务器发出请求,但我认为服务器根本不会回复。谢谢
    猜你喜欢
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2017-01-24
    • 1970-01-01
    相关资源
    最近更新 更多