預檢資料表要求
作業會在 Preflight Table Request
傳送要求之前,先查詢 Azure 資料表儲存體的跨原始來源資源分享 (CORS) 規則。
網頁瀏覽器或其他使用者代理程式會傳送預檢要求,其中包含代理程式想要提出之要求的源網域、方法和標頭。 如果已啟用資料表儲存體的 CORS,則資料表儲存體會根據帳戶擁有者透過 設定資料表服務屬性設定的 CORS 規則評估預檢要求。 資料表儲存體接著會接受或拒絕要求。
如需 CORS 和預檢要求的詳細資訊,請參閱 Azure 儲存體的 CORS 規格 和 CORS 支援。
要求
您可以依照下列方式指定 Preflight Table Request
。 使用您的儲存體帳戶名稱取代 <account-name>
。 將 取代 <table-resource>
為將做為要求目標之資料表資源的名稱。
HTTP 指令動詞 | 要求 URI | HTTP 版本 |
---|---|---|
OPTIONS |
http://<account-name> .table.core.windows.net/<table-resource> |
HTTP/1.1 |
URI 必須一律包含 / (/) 的正斜線,以分隔主機名稱與 URI 的路徑和查詢部分。 在此作業的情況下,URI 的路徑部分可以是空的,也可以指向任何資料表資源。
資源在提出預檢要求時可能或可能不存在。 預檢要求會根據服務的 CORS 規則在服務層級進行評估,因此資源名稱的存在或不存在不會影響作業的成功或失敗。
URI 參數
無。
要求標頭
下表描述必要和選擇性的要求標頭:
要求標頭 | 描述 |
---|---|
Origin |
必要。 指定發出要求的來源。 系統會根據服務的 CORS 規則檢查此來源以判斷預檢要求成功或失敗。 |
Access-Control-Request-Method |
必要。 指定要求的方法 (或 HTTP 動詞) 。 系統會根據服務的 CORS 規則檢查此方法以判斷預檢要求失敗或成功。 |
Access-Control-Request-Headers |
選擇性。 指定要傳送的要求標頭。 如果不存在,服務會假設要求不包含標頭。 |
要求本文
無。
回應
回應包括 HTTP 狀態碼和一組回應標頭。
狀態碼
成功的作業會傳回狀態碼 200 (OK)。
如需狀態碼的相關資訊,請參閱 狀態和錯誤碼。
回應標頭
這項作業的回應包括下列標頭。 回應也可能包含額外的標準 HTTP 標頭。 所有標準標頭都符合 HTTP/1.1 通訊協定規格。
如需預檢要求標頭的詳細資訊,請參閱 CORS 規格。
回應標頭 | 描述 |
---|---|
Access-Control-Allow-Origin |
指出允許的來源,如果預檢要求成功,則會比對要求中的源標頭。 |
Access-Control-Allow-Methods |
如果預檢要求成功,此標頭會設定為為要求標頭 Access-Control-Request-Method 所指定的值或值。 |
Access-Control-Allow-Headers |
如果預檢要求成功,此標頭會設定為為要求標頭 Access-Control-Request-Headers 所指定的值或值。 |
Access-Control-Max-Age |
指定允許使用者代理程式快取未來要求的預檢要求時間長度。 |
Access-Control-Allow-Credentials |
指出是否可以透過認證提出要求。 此標頭一律設定為 true 。 |
回應本文
無。
授權
作業 Preflight Table Request
一律會以匿名方式執行。 它不需要授權,而且如果提供認證,則會忽略認證。
注意
如果您已啟用 Azure 儲存體分析並記錄計量,則會將作業的 Preflight Table Request
通話記錄為 AnonymousSuccess
。 基於這個理由,如果您在Azure 入口網站中檢視計量,您會看到 AnonymousSuccess
記錄的 Preflight Table Request
。 此計量不表示您的私人資料已遭入侵,但只有 Preflight Table Request
作業成功,狀態碼為 200 (OK) 。
範例要求與回應
下列範例會傳送來源 www.contoso.com
的預檢要求。 要求方法會設定為 PUT
,而要求標頭會設定為 content-type
和 accept
。
OPTIONS http://myaccount.table.core.windows.net/mytable HTTP/1.1
Accept: */*
Origin: www.contoso.com
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: content-type, accept
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Content-Length: 0
回應指出服務已啟用 CORS,且 CORS 規則符合預檢要求:
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 60
Access-Control-Allow-Methods: PUT
Access-Control-Allow-Headers: accept,content-type
備註
如果已啟用服務的 CORS,且 CORS 規則符合預檢要求,服務就會回應狀態碼為 200 (OK) 的預檢要求。 回應包含所需的 Access-Control
標頭。 在此情況下,要求會計費。
如果未啟用 CORS 或 CORS 規則不符合預檢要求,服務會以狀態碼 403 (禁止) 回應。 在此情況下,不會收取要求的費用。
OPTIONS
如果要求格式不正確,服務會以狀態碼 400 (不正確的要求) 回應,而且不會收取要求費用。 格式錯誤的要求範例是不包含必要 Origin
和 Access-Control-Request-Method
標頭的要求。
預檢要求是查詢與特定儲存體帳戶相關聯之儲存體服務的 CORS 功能的機制。 預檢要求不會針對特定資源。