1

我正在开发需要在网页上显示 PDF 的 Angular 应用程序。为了实现这一点,我正在使用包simple-pdf-viewer
当我提供本地 PDF 文件的路径(如local-path )时,此包工作正常 ,但是当我提供实时服务器的路径(如live-path )时,它给了我错误

localhost/:1 无法加载https://booksapi.alphawods.com/storage/app/pdf-test.pdf:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“ http://localhost:4200 ”。

我使用Laravel作为后端,而Angular在前端。通常这是我已经配置的 Laravel 的常见 CORS 问题,并且我对服务器的所有请求都工作正常。

这是在我的服务器上使用的工作 CORS 文件屏幕截图。 科尔斯

这是调用 pdf 资源的simple-pdf-viewer代码

public openUrl(url: string, startAt: SimplePDFBookmark = SimplePDFBookmark.EMPTY_BOOKMARK) {debugger
  this.http.get(url, { responseType: 'arraybuffer',withCredentials: false })
  .subscribe((file: ArrayBuffer) => {
    this.openDocument(new Uint8Array(file), startAt);
  }, error => {
    this.onError.emit(error);
    this.loaded = false;
  });}

我已经在 GitHub 上阅读了与此相关的问题,但找不到解决方案。这是该问题相关问题的链接

4

1 回答 1

2

您需要配置的另一件事是您的 Web 服务器 ( nginx/ apache) 以允许CORS. 仅当请求命中您的应用程序时,在中间件上添加CORS配置才有效。由于您直接访问文件,因此永远不会添加额外的标题,因为它没有命中任何路由,对吗?因此,请求将仅由 Web 服务器处理。LaravelLaravelLaravel

我希望这能给你一些提示。

于 2018-07-11T11:56:30.477 回答