访问s3里pdf文件出现strict-origin-when-cross-origin问题修复

解决方案
复制代码
location /s3-pdf/ {
    proxy_pass https://xxx-pdf.s3.us-east-2.amazonaws.com/;
    proxy_set_header Host xxx-pdf.s3.us-east-2.amazonaws.com;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_ssl_server_name on;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Range $http_range;
    proxy_set_header If-Range $http_if_range;

    add_header Content-Type application/pdf;
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods GET,HEAD;
    add_header Access-Control-Allow-Headers Range;
}

把访问 https://你的域名/s3-pdf/xxx.pdf的请求,反向代理转发到 AWS S3 上的 PDF 文件,并在返回给浏览器时强制声明为 PDF 类型,顺便处理跨域问题。
客户端访问:/s3-pdf/test.pdf
Nginx 实际去请求:https://xxx-pdf.s3.us-east-2.amazonaws.com/test.pdf

location /s3-pdf/ {
    proxy_pass https://xxx-pdf.s3.us-east-2.amazonaws.com/;
    ...
}

强制告诉浏览器:返回的是 PDF
否则可能出现:
浏览器下载失败
直接显示乱码
被当成 text/plain

add_header Content-Type application/pdf;
实际流程
复制代码
浏览器
 ↓
https://cdn.example.com/s3-pdf/test.pdf
 ↓(Nginx 代理)
https://xxx-pdf.s3.us-east-2.amazonaws.com/test.pdf
 ↓
S3 返回 PDF
 ↓
Nginx 加上 Content-Type
 ↓
浏览器正确预览 / 下载 PDF
增加跨域配置
复制代码
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,HEAD;
add_header Access-Control-Allow-Headers Range;
大文件 / 断点续传问题
复制代码
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;

# 【关键点】Host 必须设置为 S3 的域名,不能用 $host
proxy_set_header Host xxx-pdf.s3.us-east-2.amazonaws.com;
修改配置并重载 Nginx (nginx -s reload) 后,再次访问链接
相关推荐
huaweichenai4 小时前
spring boot操作PDF
java·spring boot·pdf
开开心心就好12 小时前
批量提取PDF中的图片,直接导出原图
前端·javascript·支持向量机·智能手机·pdf·html·启发式算法
泡海椒2 天前
PDF 表格样式优化:jquick-pdf 边框、圆角、背景色
java·开发语言·pdf
泡海椒2 天前
jquick-pdf 表格实战:动态数据 PDF 报表生成
java·开发语言·pdf
泡海椒2 天前
jquick-pdf 表格行列尺寸控制实战:单元格合并的可行边界
java·开发语言·pdf
java_logo3 天前
Docker 部署 Gotenberg 完整教程:Compose 搭建文档转 PDF API
docker·pdf·chromium·libreoffice·文档转换·轩辕镜像·gotenberg
泡海椒3 天前
jquick-pdf 防止 PDF 内容分页断裂:keepTogether 属性妙用
java·开发语言·pdf
泡海椒3 天前
jquick-pdf 文本元素实战:段落、行内文本、制表符用法详解
java·开发语言·pdf
SamChan904 天前
Python 处理小语种 PDF 的编码坑:重音字符、连字与 (cid:xx) 乱码的解决方案
python·ai·pdf·机器翻译
微咣科技4 天前
平台化工业AI再突破|大捷智能携手岚图汽车,打造车身焊装智能设计行业标杆
pdf·音视频