預檢佇列要求

作業會在 Preflight Queue Request 傳送要求之前,先查詢 Azure 佇列儲存體的跨原始來源資源分享 (CORS) 規則。

網頁瀏覽器或其他使用者代理程式會傳送預檢要求,其中包含代理程式想要提出之要求的源網域、方法和標頭。 如果已啟用佇列儲存體的 CORS,則佇列儲存體會根據帳戶擁有者透過 設定佇列服務屬性所設定的 CORS 規則評估預檢要求。 佇列儲存體接著會接受或拒絕要求。

如需 CORS 和預檢要求的詳細資訊,請參閱Azure 儲存體的 CORS 規格和 CORS 支援

要求

您可以指定 Preflight Queue Request 如下。 使用您的儲存體帳戶名稱取代 <account-name>。 將 取代 <queue-resource> 為將做為要求目標的佇列資源名稱。

HTTP 指令動詞 要求 URI HTTP 版本
OPTIONS http://<account-name> .queue.core.windows.net/<queue-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 Queue Request 一律會匿名執行。 它不需要授權,而且會在提供認證時忽略認證。

注意

如果您已啟用 Azure 儲存體分析並記錄計量,則會將作業的呼叫 Preflight Queue Request 記錄為 AnonymousSuccess 。 基於這個理由,如果您在Azure 入口網站中檢視計量,您會看到 AnonymousSuccess 記錄的 Preflight Queue Request 。 此計量不會指出您的私人資料已遭入侵,但只有 Preflight Queue Request 作業成功,狀態碼為 200 (OK) 。

範例要求與回應

下列範例會傳送來源 www.contoso.com 的預檢要求。 要求方法會設定為 PUT ,而要求標頭會設定為 content-typeaccept

OPTIONS http://myaccount.queue.core.windows.net/myqueue  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 支援