url - 使用 AWS key 和签名属性在浏览器中从 Amazon S3 打开 .pdf 文件?

标签 url amazon-s3 cross-browser

当我尝试在 Chrome 和 FF 中单击我网站上的 pdf 链接时,它没有做任何事情。我可以右键单击并另存为,但无法在浏览器中打开它。当我删除 AWS key 和签名时,这两种浏览器都启用了 adobe 阅读器并且可以正常工作。

https://s3.amazonaws.com/bucket/sample.pdf?AWSAccessKeyId=&Expires=&Signature= // Does not open

https://s3.amazonaws.com/bucket/mypdf.pdf // Opens fine

它在 IE 和 Opera 中都可以正常工作。有什么办法绕过这个吗?

最佳答案

您的问题的原因非常明显,但可能很难解决。当您打开非关键链接时

https://s3.amazonaws.com/bucket/mypdf.pdf

浏览器在链接末尾获取 .pdf 扩展名并尝试下载它。但是当您有额外的请求参数时,您的链接不会以 .pdf 结尾,这可能会导致问题。

看起来您上传的 pdf 文件没有内容类型的元数据。如果您没有 自动找出内容类型 上传过程中选中的复选框,尝试通过添加元数据手动设置内容类型
content-type: application/pdf

另一个想法是让浏览器认为链接以 .pdf 结尾,因此尝试使用此链接下载:
https://s3.amazonaws.com/bucket/sample.pdf?AWSAccessKeyId=a&Expires=b&Signature=c&file=sample.pdf

关于url - 使用 AWS key 和签名属性在浏览器中从 Amazon S3 打开 .pdf 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16530366/

相关文章:

python - Debian Jessie 上的 Python 问题

c++ - 在 C++ 跨平台中解析 url 的简单方法?

javascript - 当 url 上已有 # anchor 时如何滚动到特定元素

laravel - 指定的键不存在 - Laravel

javascript - IE8 的 jquery 问题

python - 使用 Python 和 PySpark 提取 URL 参数

reactjs - React Native + Amplify S3 示例

将文件从 AWS EC2 上传到 S3 的 Shell 脚本

html - 防止IE篡改页面代码?

javascript - CKEditor 中的自动链接 URL