關於Cross Origin Resource Sharing (CORS)有一些我從來沒有真正理解的東西,也就是說,對於一個跨源HTTP請求,它不是客戶端來決定它想要信任的服務器。相反,服務器聲明(在Access-Control-Allow-Origin
響應標頭中)一個或多個特定客戶(源)信任它。如果服務器說客戶端信任服務器,啓用CORS的瀏覽器只會將服務器的響應傳遞給應用程序。這似乎是在兩個HTTP方之間建立信任關係的反向方式。使用CORS,爲什麼服務器會聲明哪些客戶端可以信任它,而不是客戶端聲明他們信任的服務器?
對我來說更有意義的機制是類似於以下的機制:客戶端聲明它所信任的源的列表;例如,通過<head>
中的一些虛構的<meta allow-cross-origin="https://another-site:1234"/>
元素。 (當然,瀏覽器必須確保這些元素是隻讀的,不能通過腳本進行刪除,修改或增強。)
我對CORS有什麼誤解?爲什麼可信賴來源的客戶端聲明不起作用?爲什麼服務器需要確認哪些客戶端(源)可以信任其響應?誰實際上受CORS保護誰?它是否保護服務器或客戶端?
(這是一個很大的問題。我希望這是清楚的,我沒想到的答案,每一種,而只是指出我的根本誤解的答案。)
對於這個downvoter,我會很感激提示我的問題有什麼問題。我很高興對它進行編輯,進一步解釋,或者如果這個問題確實不合適,請將其撤回。 – stakx
託管JavaScript的網站隱式聲明,它首先通過從該URL請求數據來信任它試圖從中檢索數據的網站。 – Quentin
「服務器聲明(在Access-Control-Allow-Origin響應標頭中)一個或多個特定客戶(源)信任它」 - 不,它聲明它信任那些起源,而不是它們信任它。 – Quentin