Cors Проблема при попытке получить доступ к загрузке файла Rocket Chat, размещенной на S3 - PullRequest
0 голосов
/ 05 апреля 2019

Это работает в почтальоне.

GET http://3.0.253.143:3000/file-upload/7uvaAJgJrneitgywJ/_png.png с заголовком X-User-Id и X-Auth-Token

В dev на localhost я получаю

Access to fetch at 'http://3.0.253.143:3000/file-upload/7uvaAJgJrneitgywJ/_png.png' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Мой код:

  fetch('http://3.0.253.143:3000/file-upload/7uvaAJgJrneitgywJ/_png.png', {
    method: 'GET',
    headers: {
      'Content-Type': 'application/json',
      'X-User-Id': ******,
      'X-Auth-Token': *******,
      'Access-Control-Allow-Credentials': 'true',
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
    }
  });

В Rocket Chat, в общих и остальных API, cors включен, а origin установлен на *.

В S3 я добавил:

    <?xml version="1.0" encoding="UTF-8"?>
    <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
        <CORSRule>
            <AllowedOrigin>*</AllowedOrigin>
            <AllowedMethod>PUT</AllowedMethod>
            <AllowedMethod>POST</AllowedMethod>
            <AllowedMethod>GET</AllowedMethod>
            <AllowedMethod>HEAD</AllowedMethod>
            <MaxAgeSeconds>3000</MaxAgeSeconds>
            <AllowedHeader>*</AllowedHeader>
        </CORSRule>
    </CORSConfiguration>

Использование расширения Chrome для разрешения Cors, https://chrome.google.com/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf

Я все еще получаю эту ошибку:

Access to fetch at 'http://3.0.253.143:3000/file-upload/7uvaAJgJrneitgywJ/_png.png' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

Обновление: С токеном и без него я получаю одинаковую ошибку CORS. Возвращенный код состояния запрещен 403. В почтальоне я получаю 403 без токена, и он отлично работает с токеном.

...