cact-pdf cors для хранения gcp - PullRequest
1 голос
/ 06 октября 2019

Я хочу получить pdf файл из моего GCP, но я получаю CORS ошибку. Хорошо, нпЯ пытался найти, как решить эту проблему в GCP. Нашел этот пример:

https://bitmovin.zendesk.com/hc/en-us/articles/360000059353-How-do-I-set-up-CORS-for-my-Google-Cloud-Storage-Bucket-

Я следую всем этим инструкциям:

echo '[{"origin": ["*"],"responseHeader": ["Content-Type"],"method": ["GET", "HEAD"],"maxAgeSeconds": 3600}]' > cors-config.json

gsutil cors set cors-config.json gs://booknote-pdf-files-store

enter image description here

enter image description here

import React, { useState } from 'react'
import { Document, Page } from 'react-pdf'
import { withStyles } from '@material-ui/styles'
import PropTypes from 'prop-types'

import CircularProgress from '@material-ui/core/CircularProgress'

import styles from './styles'



const Application = ({ classes }) => {
  const [numPages, setNumPages] = useState(null)
  const [pageNumber, setPageNumber] = useState(1)

  const onDocumentLoadSuccess = ({ numPages }) => {
    setNumPages(numPages)
  }

  return (
    <div className={classes.container}>
      <Document
        file="https://storage.cloud.google.com/booknote-pdf-files-store/living_in_the_light.pdf"
        onLoadSuccess={onDocumentLoadSuccess}
        renderMode="svg"
        loading={<CircularProgress />}>
        <Page pageNumber={pageNumber} />
      </Document>
    </div>
  )
}

Application.propTypes = {
  classes: PropTypes.instanceOf(Object).isRequired,
}

Но я все еще получаю ошибку CORS. Что я делаю неправильно ? Если вам нужна дополнительная информация, пожалуйста, дайте мне знать

Также вы можете проверить пакет npm, который я использую для этой цели:

https://www.npmjs.com/package/react-pdf

1 Ответ

0 голосов
/ 07 октября 2019

Предполагая, что команда gsutil для настройки cors действительно работает (я бы еще раз проверил, просто чтобы выполнить: gsutil cors get gs://booknote-pdf-files-store и посмотреть, были ли изменения отражены). Проще говоря, react-pdf во многом зависит от PDF.js, и поэтому возможно, что это вызвано тем, как PDF.js получает файл с сервера.

Взятый прямо из FAQ по PDF.js, «PDF.js запускается с теми же разрешениями, что и любой другой код JavaScript, что означает, что он не может выполнять перекрестные запросы источника».

В вашем распоряжении есть несколько обходных путей, но один из них использует прокси-сервер, который возвращает заголовок Access-Control-Allow-Origin, если он не в том же источнике. Таким образом, ваш запрос на файл не будет отправлен в GCS, а будет отправлен вашему прокси, который перенаправит их в GCS. Я очень прочитаю PDF.js FAQ , конечно, он укажет вам правильное направление.

...