我正在尝试使用带有范围请求的pdf.js(逐步加载pdf文档),但是当我尝试从amazon s3 urls加载pdf时,控制台中会出现此错误:
- 拒绝获得不安全的标题“Accept-Ranges”
并且pdf不会通过206部分内容(范围请求)加载,而是加载200,然后在查看器中查看。
这是pdf url的一个例子:
任何帮助
答案 0 :(得分: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>
但是在我将资源投入CDN后,这不起作用。无论如何,即使在CDN上使用200,然后在S3上进行206部分下载,它似乎也要快得多。
答案 1 :(得分:7)
迟到的答案,但是对于Azure blob(我知道你问过AWS,但是这让我疯狂地试图弄清楚如此回答)你必须将Accept-Ranges专门设置为Allowed Header,只需将其设置为{{ 1}}不起作用。
我使用以下C#代码执行此操作:
*
答案 2 :(得分:3)
您需要设置
Access-Control-Allow-Headers : Accept-Ranges
答案 3 :(得分:0)
我也遇到了同样的问题。我没有直接传递网址,而是通过url =&#34; url&#34;传递了对象。和withCredentials = true。
传递直接网址时没有传递Cookie
以下是如何形成对象的方法 PDF.JS: Render PDF using an ArrayBuffer or Blob instead of URL