-->

随着CORS,为什么服务器宣布其客户端可以信任它,而不是客户宣称,他们相信什么服务器? [重复]

2019-09-29 18:04发布

这个问题已经在这里有一个答案:

  • 的XMLHttpRequest不能加载XXX否“访问控制允许来源”标题 6答案

也有一些是跨源资源共享(CORS) ,我从来没有真正了解,即具有跨来源的HTTP请求,它不是得来决定哪些服务器(S)它要信任客户端; 相反,服务器宣告(在Access-Control-Allow-Origin响应报头)的一个或多个特定的客户端(来源)信任它。 如果服务器说,客户端信任服务器使用的支持CORS的浏览器将只提供服务器对应用程序的响应。 这似乎是建立两个HTTP双方之间的信任关系的反向方式。

是什么让我更有意义类似于以下机制:客户声明起源的一个列表,它信任; 例如,通过一些虚构<meta allow-cross-origin="https://another-site:1234"/>中的元素<head> (当然浏览器必须确保这些元件是只读,并且不能被去除,修改或通过脚本增强。)

什么是我误解约CORS? 为什么会信任来源的客户端的声明不起作用? 为什么这些服务器得到确认哪些客户端(来源)可以信任它的反应? 是谁从谁通过CORS实际保护? 它保护的服务器或客户端?

(这是一个很大的问题。我希望这是清楚的,我没想到的答案,每一种,而只是指出我的根本误解的答案。)

Answer 1:

客户端无关,用它做。 随着CORS标题你告诉客户端,其他服务器做的,我相信。 那些能够共享你的资源和客户端不会头脑。

例如,如果你有两个域,你告诉客户端,以便让你的资源,你的第二个网站使用,你不说我相信你作为一个客户端。

所以,你要保护的服务器,而不是客户端。 你不想AJAX API端点,以在世界各地举办的脚本访问。

客户端一点好处也没有/从此失去。 它的唯一的服务器保护,因为使用AJAX中的全部网址的任何人清晰可见,如果当时没有这种保护,任何人都可以继续使用自己的API上运行他们的前端,仅服务器具有该输,使他们能决定谁可以使用他们的资源。



文章来源: With CORS, why do servers declare which clients may trust it, instead of clients declaring what servers they trust? [duplicate]