處理註冊

HTTP 伺服器 API 會使用路由資料庫在註冊期間套用存取檢查。 UrlPrefix 的註冊必須通過一系列的存取檢查,以確保註冊命名空間的使用者具有訪問許可權。 使用 HttpAddUrl 函式來新增註冊。

使用 HttpAddUrl 新增註冊

  1. 如果 UrlPrefix 中的埠號碼為與 UrlPrefix 的協定不同的協定保留或註冊,則註冊會失敗。 無法在相同的埠上支援 HTTP 和 HTTPS。
  2. 註冊會放入適當的類別中。 存儲桶以 URL 的主機類型為基礎,具體說明在 路由傳入請求 一節中。 以下步驟適用於此特定桶子。
  3. 如果存在重複的註冊項目,請傳回錯誤碼。
  4. 選擇協議、主機和埠元件等於 UrlPrefix 的預約條目。 從這些中,找到具有最長 relativeUri 匹配項的項目。 如果條目存在,請根據與該條目相關聯的 ACL 檢查權限,並傳回成功。 如果條目不存在,則回傳ERROR_ALREADY_EXISTS碼。

下列範例說明安裝註冊到路由資料庫的過程。 路由資料庫中存在預留項 1 和 2。

  • 預約 1:使用者 A 和使用者 C 的 https://+:80/vroot/subdir/。此預約會放在「+」桶中。
  • 預訂 2:使用者 B 的 https://adatum.com:80/vroot/。此項預訂將放置在「指定主機」類別中。
  • 註冊:使用者 B https://+:80/vroot/subdir/ 因為保留 1 而失敗。
  • 註冊 https://adatum.com:80/vroot/subdir/ 由使用者 B 由於保留 2 的原因而成功。
  • 使用者 C 的註冊編號 https://adatum.com:80/vroot/subdir/ 因為有更明確的預留2而失敗。 強式通配符保留在明確保留或註冊的內容中沒有意義。
  • 因為保留 1,使用者 A 的註冊 https://+:80/vroot/subdir/ 成功。
  • 註冊:使用者 B https://adatum.com:80/vroot/anotherdir/ 會因為保留 2 而成功。

註冊的存取檢查不包含委派許可權的檢查。 沒有依據預約進行的存取檢查(請參閱 HttpRemoveUrl)。 刪除註冊的唯一需求,即呼叫程式必須已建立註冊。