預檢資料表要求

作業會在 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-typeaccept

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 (不正確的要求) 回應,而且不會收取要求費用。 格式錯誤的要求範例是不包含必要 OriginAccess-Control-Request-Method 標頭的要求。

預檢要求是查詢與特定儲存體帳戶相關聯之儲存體服務的 CORS 功能的機制。 預檢要求不會針對特定資源。

另請參閱

帳戶上的作業 (資料表儲存體)
Azure 儲存體的 CORS 支援