amazon-web-services - 从 AWS S3 + Cloudfront 获取文件在 Safari 上工作,但在 Chrome 和 Firefox 上不工作(404 跨源时未找到严格源)
问题描述
我正在执行预览存储在 AWS S3 和 Cloudfront 上的 pdf 文件的功能。我在我的 Bucket 的权限中设置了 CORS:
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"HEAD"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
}
]
我还在 CloudFront 中配置,未登录到我的站点的用户,他/她将无法访问此文件。
我正在使用 CakePHP 4 和 Vuejs,要访问 PDF 文件,我必须在 JS 文件中调用 API:/api/preview-file/30.json
import * as pdfjsLib from 'pdfjs-dist'
import * as pdfjsWorker from 'pdfjs-dist/build/pdf.worker.entry'
pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsWorker
export default {
name: 'PreviewFile',
mounted () {
// const url = this.$route.query.q
pdfjsLib.getDocument('/api/preview-file/30.json').promise.then(pdf => {
const viewer = document.getElementById('pdf-viewer')
for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {
const canvas = document.createElement('canvas')
canvas.className = 'pdf-page-canvas'
viewer.appendChild(canvas)
pdf.getPage(pageNum).then(page => {
const viewport = page.getViewport({ scale: 2 })
canvas.height = viewport.height
canvas.width = viewport.width
page.render({ canvasContext: canvas.getContext('2d'), viewport: viewport })
})
}
})
}
}
它在 safari 上运行良好,但我不知道为什么它不能在 Chrome 和 Firefox 上运行
解决方案
推荐阅读
- javascript - 如何使用 JavaScript 显示图像和文本搜索结果?
- java - Spring boot Jsp / Tag在不同模块中
- jquery - Jssor 是否可以在滑块上放置一个暂停按钮并播放?
- spring - Spring Boot 执行器端点未通过 HTTP 公开
- python - 将 Pandas DataFrame 列值与另一个 DataFrame 列匹配
- glsl - Vulkan 是否支持着色器中的原子浮点操作?
- javascript - 无法读取未定义的属性“电子表格” - 谷歌电子表格
- python - 连接具有多个值组件的两个 RDD 并将结果展平
- javascript - MomentJS 获取相对于今天的先前日期
- node.js - 无法在浏览器中连接到我的节点服务器,但 curl 有效