尝试直接从Azure文件存储将PDF文件下载到浏览器时出现此错误:
<Error>
<Code>ConditionHeadersNotSupported</Code>
<Message>
Condition headers are not supported. RequestId:a84ee68e- 001a-001b-4223-bff5e7000000 Time:2017-04-27T06:57:22.2002199Z
</Message>
</Error>
边缘:空白页面或带有冻结加载指示器的空白页。
FireFox:第二次,显示下载文件的对话框。
Chrome:空白页或当PDF文档“在默认PDF查看器应用程序中打开PDF文件”设置时,显示下载文件的对话框。
IE:显示下载文件的对话框。
Safari:显示PDF。
答案 0 :(得分:3)
Azure文件存储存在错误或任何问题,这是因为某些代理/缓存服务器。您可以使用以下解决方案。
system
答案 1 :(得分:1)
Azure文件存储错误:不支持条件标头
由于新的Edge浏览器不支持ActiveX插件。因此,Acrobat / Reader插件不适用于Edge。我们可以获取Change in support for Acrobat and Reader plug-ins in modern web browsers和Microsoft Edge: Building a safer browser。
修改强>
如果我们尝试在私有和开发模式下使用Edge下载PDF文件,我们可以收到错误消息“某些东西使这个PDF保持打开”并且还可以知道边缘浏览器已发送2个要求。第二次请求标题为“If-range
”。根据Azure文件存储Get File API,没有指定支持的条件标头If-Range
。我还找到了一个关于边缘浏览器的类似issue。
我也在Firefox和Chrome中测试,然后只获得1个请求。
注意:对于Azure Blob服务,可以从边缘浏览器正确打开pdf文件。由于支持成功操作以读取完整blob的Blob Get Blob API返回状态代码200(OK)和 读取指定范围的成功操作将返回状态代码206(部分内容)。
答案 2 :(得分:1)
我认为你需要为你的共享设置CORS规则
或者您可能上传了一个空文件。
答案 3 :(得分:1)
我们还面临着这个问题和最简单的方法,直到Azure File Team实施Azure Feedback forum中给出的建议之前,一种解决方法是在URL末尾附加额外的参数。 因此,对于上述网址- https://peachstatepca.file.core.windows.net/content/newsletters/PresseApril2017.pdf?sv=2016-05-31&sr=f&sig=rkQEmY6IWXZqcgvhmm00gLQ%2FCZEq6nsH95S3aP9T72A%3D&se=2017-05-01T11:46:18Z&sp=r &xyz =客户端的时间戳
这将确保浏览器不会缓存,因此不会添加条件标头
答案 4 :(得分:1)
如果您使用的是C#和Nuget软件包,则可以通过编程方式执行此操作
var sas = fileRef.GetSharedAccessSignature(new SharedAccessFilePolicy()
{
Permissions = SharedAccessFilePermissions.Read,
SharedAccessExpiryTime = new DateTimeOffset(DateTime.UtcNow.AddHours(1))
},
new SharedAccessFileHeaders()
{
CacheControl = "no-cache, no-store, must-revalidate"
});
答案 5 :(得分:0)
Azure文件存储当前不支持条件标题。
workaround将使用CacheControl
属性并将其设置为no-cache, no-store, must-revalidate
。