【问题标题】:futurepress/epub.js not working with Amazon s3 urlsfuturepress/epub.js 不适用于 Amazon s3 url
【发布时间】:2018-05-24 15:36:49
【问题描述】:

我正在做一个项目,我必须在我的 Laravel 网络应用程序上显示电子书。我正在使用 futurepress/epub.js 显示 epub 文件,epub.js 显示存储在本地存储中的文件,但是当我将文件存储在 s3 中并使用 s3 url 时,它会引发异常。

1. Uncaught ReferenceError: href is not defined 当我使用签名的 s3 url 时抛出

示例:未捕获的 ReferenceError: href is not defined 在这一行中抛出 var Book = ePub("https://venkitest1.s3.us-east-2.amazonaws.com/contents/1/1/1/b6221779e85b87c620decc8028aaf8188c000b26.epub?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAI6LL2FHRGEK5PCKA%2F20171208%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20171208T112812Z&X-Amz-SignedHeaders=host&X-Amz-Expires=60&X-Amz-Signature=9a6ae022833c4a33495e164a6d5a9134b0444f821ea29d11c49b47b66f1727c8");

2。无法加载https://venkitest1.s3.us-east-2.amazonaws.com/contents/1/1/1/b6221779e85b87c620decc8028aaf8188c000b26.epub:请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://localhost:8000' 因此不允许访问。 当我使用 s3 公共 url 时抛出

示例:var Book = ePub("https://venkitest1.s3.us-east-2.amazonaws.com/contents/1/1/1/b6221779e85b87c620decc8028aaf8188c000b26.epub");

这行得通 - var Book = ePub("http://localhost:8000/storage/contents/1/1/1/32bfe62a1a8fab105588af74f468f333a4396b53.epub");

感谢任何帮助。

谢谢。

【问题讨论】:

  • 更新:在我更新存储桶 CORS 配置后,它现在可以与公共 s3 url 一起使用。但仍然没有签名 s3 url 的解决方案。

标签: amazon-s3 laravel-5.5 epub.js


【解决方案1】:

解决方案:通过传递 { contains: true }

使用将书籍作为包含的 epub 处理来解决问题

示例: var Book = ePub("http://server.com/media.php?id=12345", {包含:true });

【讨论】:

    【解决方案2】:

    您需要将 localhost:8000 添加到您的 s3 存储桶的 CORS 策略中。 http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

    【讨论】:

    • 感谢您的回复。是的,我在使用 s3 公共 url 时添加了修复问题 “不存在 'Access-Control-Allow-Origin' 标头”。但是使用签名的 s3 url 时仍然会抛出 "href is not defined" 异常。
    猜你喜欢
    • 1970-01-01
    • 2015-09-06
    • 2012-11-24
    • 2020-05-04
    • 2020-11-23
    • 1970-01-01
    • 2013-08-17
    • 2012-11-11
    • 2021-08-10
    相关资源
    最近更新 更多