拒绝使用amazon网址从pdf.js获取不安全标题“Accept-Ranges”错误

时间:2013-04-24 17:06:46

标签: javascript pdf amazon-ec2 pdf.js

我正在尝试使用带有范围请求的pdf.js(逐步加载pdf文档),但是当我尝试从amazon s3 urls加载pdf时,控制台中会出现此错误:

- 拒绝获得不安全的标题“Accept-Ranges”

并且pdf不会通过206部分内容(范围请求)加载,而是加载200,然后在查看器中查看。

这是pdf url的一个例子:

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

任何帮助

4 个答案:

答案 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