同源策略是否仍允许执行服务器端代码?

Isr*_*eca 1 security ajax google-chrome cors web

我以为SOP在发送之前阻止了对其他域的所有请求符合他们的规则,但我在我的机器中做了一个简单的例子,这不是我所期望的:

1-我有一个本地服务器监听端口8000,它将打印发送到/apiURL 的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的存在是为了解决这类问题.它的工作方式,它只能保证你无法得到回复.是这样吗?几乎所有的网络文件都没有这么说.

我错过了什么?或者我的例子不知何故错了?

Gab*_*yel 7

正如你所说的那样,许多人对同一起源政策的防范以及CORS如何运作产生了很大的误解.

确实发出了请求,服务器处理它并创建响应.只有浏览器才能阻止客户端访问结果.这可能很容易让位于像CSRF这样的攻击.

预检请求也有一个角色,但该点不会改变,同一原始策略不会停止请求,它会阻止响应到达浏览器中的调用者.