Mah*_*fel 14 javascript pdf amazon-ec2 pdf.js
我正在尝试使用带有范围请求的pdf.js(逐步加载pdf文档),但是当我尝试从amazon s3 urls加载pdf时,控制台中会出现此错误:
- 拒绝获得不安全的标题"Accept-Ranges"
并且pdf不会通过206部分内容(范围请求)加载,而是加载200,然后在查看器中查看.
这是pdf url的一个例子:
任何帮助
drK*_*eso 16
像这样在亚马逊上设置CORS策略似乎有所帮助.
<?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>
Run Code Online (Sandbox Code Playgroud)
但是,在我将资源放在CDN之后,这不起作用.无论如何,即使在CDN上使用200然后在S3上进行206部分下载,它似乎也要快得多.
迟到的答案,但是使用Azure blob(我知道你问过AWS,但是这让我疯狂地试图弄清楚如此回答)你必须将Accept-Ranges专门设置为Allowed Header,只是将其设置为*不起作用.
我使用以下C#代码来执行此操作:
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8430 次 |
| 最近记录: |