6

在为 Web 开发时,我一直在与奇怪的限制作斗争。其中之一是 AJAX 请求的同源限制,我在问自己,如果不是阻止对跨域资源的请求,而是在制作 cookie 时丢弃它们(以避免滥用浏览器会话)。

Cookie 是一种工具,但并非必不可少(例如,如果您需要保留上下文,您可以在请求 URL 中生成带有 cookie 的页面),而跨域阻止则非常烦人。

从逻辑的角度来看,还有一些在我看来非常奇怪的事情,即阻止特定主题访问全世界其他人无需身份验证即可访问的资源。

我想知道是否有一些真正的技术原因表明同源政策确实是最好的解决方案。

请注意,我只是出于好奇...例如,Javascript)。

4

1 回答 1

4

您假设所有身份验证凭据都是基于 cookie 的,但事实并非如此。浏览器可能会使用 PKI 证书对另一个站点进行身份验证,或者该站点可能会信任客户端,因为它在受信任的网络上具有特定的 IP 地址。这不是客户可以针对单个请求关闭的东西。

但是,正在为站点标准化一种方式以允许对其资源进行跨域请求的方式进行工作。如果一个站点知道它的某些内容是公开的并且没有客户端具有特殊权限,它可以设置一个 HTTP 标头来告诉浏览器允许从其他站点加载的脚本查看该内容。

从逻辑的角度来看,还有一些在我看来非常奇怪的事情,即阻止特定主题访问全世界其他人无需身份验证即可访问的资源。

浏览器不知道全世界都可以在没有身份验证的情况下访问资源。它不知道在访问给定 URL 时是否看到与其他客户端相同的内容。它阻止的是访问它自己的、可能是唯一的远程资源视图

于 2012-11-01T00:25:21.157 回答