2013-04-24 9 views
13

i yüklemeye çalışıyorum ne zaman aralığı istekleri ile pdf.js (pdf belgesinin ilerici yükleme) kullanmaya çalışıyorum, ancak ediyorumgüvensiz başlığını almak reddetti amazon url'lerle pdf.js gelen hata "-Aralıkları kabul et"

-Refused güvenli başlığı almak "Kabul-Aralıkları" için

ve pdf 206 kısmi içeriğine (aralık istekleri), ancak 200 ile ile yüklemez Bu hata konsolunda görünür s3 URL'ler ile ilgili pDF daha sonra görüntüleyicide görüntülenir.

https://kotob.s3.amazonaws.com/book.pdf?Signature=irgVfoAZuPPIp5kpCesni2MzpLo%3D&Expires=1366576877&AWSAccessKeyId=AKIAILBHXSTPUIBTRMSA

herhangi bir yardım

cevap

3

Buna yardımcı olacak gibi görünüyor gibi Amazon'da CORS politika ayarlandığında

Access-Control-Allow-Headers : Accept-Ranges 
+0

Bu normal bir HTTP başlık alanı olarak görünmüyor nesne oluşturmak öğrenmek için aşağıya chk direkt url

geçerken

Kurabiye geçti elde değildi. http://en.wikipedia.org/wiki/List_of_HTTP_header_fields –

+0

https://www.html5rocks.com/en/tutorials/cors/#toc- uyarınca "Erişim-control- '' ile ilgili başlıkları öneki tüm CORS" işleyen-a-basit-istek – Stevko

16

ayarlamanız gerekir:

bu

pdf url bir örnektir.

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
    <CORSRule> 
     <AllowedOrigin>*</AllowedOrigin> 
     <AllowedMethod>GET</AllowedMethod> 
     <AllowedMethod>PUT</AllowedMethod> 
     <AllowedMethod>POST</AllowedMethod> 
     <AllowedMethod>DELETE</AllowedMethod> 
     <MaxAgeSeconds>3000</MaxAgeSeconds> 
     <!-- this part is critical --> 
     <AllowedHeader>*</AllowedHeader> 
     <ExposeHeader>Accept-Ranges</ExposeHeader> 
     <ExposeHeader>Content-Encoding</ExposeHeader> 
     <ExposeHeader>Content-Length </ExposeHeader> 
     <ExposeHeader>Content-Range</ExposeHeader> 
    </CORSRule> 
</CORSConfiguration> 

Ancak, kaynakları CDN'ye yazdıktan sonra bu işe yaramıyor. Her neyse, CD3'te 200 ve S3'te 206 kısmi indirme ile bile daha hızlı görünüyor.

+0

Content-Length gereksizdir, otomatik olarak –

+2

açığa çıkar. Bu yapılandırma ve Webkit'te şanssız birçok benzer yapılandırmayı denedim. Safari ve Chrome, güvensiz "Kabul Aralıkları" hatasını atmak istiyor. – BradGreens

6

Geç yanıt, ancak Azure lekeleriyle (AWS hakkında soru sorduğunuzu biliyorum, ancak bu beni yine de yanıtlamaya çalışmak için delirtti) Accept-Ranges'i özellikle İzin Verilen Üstbilgi olarak ayarlamanız yeterli, * çalışmıyor

Bunu için aşağıdaki C# kodu kullandı:

var url = new Uri(String.Format("https://yourblob.blob.core.windows.net")); 
var credentials = new StorageCredentials("accountname", "key"); 
var client = new CloudBlobClient(url, credentials); 

var corsRule = new CorsRule(); 

corsRule.ExposedHeaders.Add("Accept-Ranges"); 
corsRule.ExposedHeaders.Add("Content-Encoding"); 
corsRule.ExposedHeaders.Add("Content-Length"); 
corsRule.ExposedHeaders.Add("Content-Type"); 

corsRule.AllowedHeaders.Add("Accept-Ranges"); 
corsRule.AllowedHeaders.Add("Content-Encoding"); 
corsRule.AllowedHeaders.Add("Content-Length"); 
corsRule.AllowedHeaders.Add("Content-Type"); 

var serviceProperties = CloudBlobClient.GetServiceProperties(); 
serviceProperties.Cors.CorsRules.Clear(); 
serviceProperties.Cors.CorsRules.Add(corsRule); 
client.SetServiceProperties(serviceProperties); 
+1

Teşekkürler, bu bana çok zaman kazandı! – guyfromfargo

İlgili konular