我正在开展一个项目,我必须在我的Laravel网络应用程序上显示电子书。我使用futurepress / epub.js显示epub文件,epub.js显示存储在本地存储中的文件,但是当我将文件存储在s3中并使用s3 url时,它会抛出异常。
1。未使用的ReferenceError:未定义href 在使用signed s3 url时抛出
示例:未捕获的ReferenceError:未定义href在此行中抛出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:没有'访问控制 - 允许 - 来源'标头出现在请求的资源上。起源' http://localhost:8000'因此,当我使用s3公共网址
时,不允许访问。示例: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");
感谢任何帮助。
谢谢。
答案 0 :(得分:0)
您需要将localhost:8000添加到s3存储桶的CORS策略中。 http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html
答案 1 :(得分:0)
解决方案:通过传递 {包含:true}
,将书籍作为包含的epub处理来解决问题示例: var Book = ePub(" http://server.com/media.php?id=12345",{contains:true});