首页 > 解决方案 > 从 AWS S3 + Cloudfront 获取文件在 Safari 上工作,但在 Chrome 和 Firefox 上不工作(404 跨源时未找到严格源)

问题描述

我正在执行预览存储在 AWS S3 和 Cloudfront 上的 pdf 文件的功能。我在我的 Bucket 的权限中设置了 CORS:

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "HEAD"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]

我还在 CloudFront 中配置,未登录到我的站点的用户,他/她将无法访问此文件。

云端配置 1 云端配置 2

我正在使用 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 上运行

苹果浏览器: 苹果浏览器

Firefox:跨域时 404 未找到严格的来源 在此处输入图像描述

标签: amazon-web-servicesamazon-s3amazon-cloudfront

解决方案


推荐阅读