2015-09-10 76 views
0

我使用Amazon S3作爲存儲我的文件,它們作爲子域連接。從沒有OPTIONS請求的s3獲取字節範圍

例如:基本域是site.com,S3存儲是s3.site.com。有時我想使用Ajax GET請求獲取文件(字節範圍)的一部分:

$.ajax({ 
    type: 'GET', 
    url: "//s3.site.com/1.py", 
    headers: {"Range": "bytes=50-100"} 
}).done(function(data) { 
    alert(data); 
}); 

它正常工作,我得到迴應......但是瀏覽器生成類型選項的一些寄生請求。據我所知,它發生在CORS policy。我可以避免它嗎?

回答

1

不,你不能避免它。這是標準和正確的行爲。

添加Range:標頭會以觸發CORS飛行前檢查的方式更改GET請求,該方式會發送OPTIONS請求。

由於請求是跨源的,請求不再符合「簡單」條件並且需要預先飛行。

同源(非跨源)請求必須具有完全相同的方案,主機和端口。子域不受此限制。

當且僅當它們相同時,兩個來源是「相同的」。

https://tools.ietf.org/html/rfc6454#page-11

+0

請求子域交叉起源嗎?例如:從site.com到s3.site.com。 – TyVik

+0

@TyVik,這是正確的。 Origin沒有等級權威概念。 RFC引用更新了答案。 –

相關問題