Origin

Web 內容的由用於訪問它的 URL方案(協議)、主機名(域)和定義。只有當方案、主機名和埠都匹配時,兩個物件才具有相同的源。

某些操作僅限於同源內容,並且可以使用 CORS 來解除此限制。

不透明源

不透明源是一種特殊的瀏覽器內部值,它模糊了資源的真實源(不透明源始終序列化為 null)。瀏覽器使用它們來確保資源隔離,因為它們從不被視為與任何其他源相等——包括其他不透明源。

不透明源適用於資源的真實源敏感、不能安全用於安全檢查或不存在的情況。具有不透明源的資源在其請求中的 Origin HTTP 標頭將設定為 null。它還將無法透過與任何其他資源的同源檢查,因此僅限於可用於跨源資源的操作。

使用不透明源的常見情況包括

  • 帶有 sandbox 屬性且不包含 allow-same-origin 標誌的 iframe 中的文件。
  • file: URL 通常被視為不透明源,以便檔案系統上的檔案無法相互讀取。
  • 使用 DOMImplementation.createDocument() 等 API 以程式設計方式建立的文件。

示例

這些是同源的,因為它們具有相同的方案 (http) 和主機名 (example.com),並且不同的檔案路徑無關緊要

  • http://example.com/app1/index.html
  • http://example.com/app2/index.html

這些是同源的,因為伺服器預設透過埠 80 傳輸 HTTP 內容

  • http://example.com:80
  • http://example.com

這些不是同源的,因為它們使用不同的方案

  • http://example.com/app1
  • https://example.com/app2

這些不是同源的,因為它們使用不同的主機名

  • http://example.com
  • http://www.example.com
  • http://myapp.example.com

這些不是同源的,因為它們使用不同的埠

  • http://example.com
  • http://example.com:8080

另見