Как получить доступ к полному тексту книги через API Gutendex без ошибки CORS? Может быть существует другой API для получения полных текстов книг? Вот часть кода запроса данных с Gutendex API: <pre><code class="javascript">let { data: book } = await useFetch(`https://gutendex.com/books/5316`) book = book._rawValue const book_text_request = book.formats['text/html'] const { book_text } = await useFetch(book_text_request);</code></pre>
Для исправления проблемы "has been blocked by CORS policy" при обращении к Gutendex API, можно использовать следующие способы: 1. Перенаправить запрос через прокси-сервер, который может обойти политику CORS. Например, можно использовать сервисы типа CORS Anywhere или создать свой собственный прокси-сервер. 2. Настроить сервер API для разрешения запросов с вашего домена. Это требует изменений на стороне сервера, чтобы отправлять заголовок Access-Control-Allow-Origin со значением вашего домена. 3. Переключиться на другой API для получения полных текстов книг, который не имеет ограничений по политике CORS. Чтобы получить доступ к полному тексту книги через API Gutendex без ошибки CORS, можно попробовать вариант с использованием прокси-сервера. Ниже приведен пример кода, как можно изменить ваш запрос: ``` const proxyUrl = 'https://cors-anywhere.herokuapp.com/'; const apiUrl = `https://gutendex.com/books/5316`; let { data: book } = await useFetch(`${proxyUrl}${apiUrl}`); book = book._rawValue; const book_text_request = book.formats['text/html']; const { book_text } = await useFetch(`${proxyUrl}${book_text_request}`); ``` Этот код отправляет запрос через прокси-сервер, который добавит заголовки CORS, чтобы обойти ошибку. Помните, что использование внешнего прокси-сервера может повлиять на производительность вашего приложения, поэтому стоит иметь это в виду.
Документацию читать пробовал? Ищем, как задать параметры useFetch():
useFetch options
This is exactly what you would pass to the normal js fetch, with a little extra.
В доках слово cors не упоминается, но useFetch() поддерживает те же параметры, что и обычный js-вский fetch(). Идём в его документацию:
fetch() Parameters
options [Optional] - A RequestInit object containing any custom settings that you want to apply to the request.
Т.е. параметры запроса кодируются в специальном объекте. Смотрим его, ищем "cors".
RequestInit
mode [Optional] - One of the following values:
same-origin - Disallows cross-origin requests completely.
cors - If the request is cross-origin then it will use the Cross-Origin Resource Sharing (CORS) mechanism.
no-cors - The request must be a simple request, which restricts the headers that may be set to CORS-safelisted request headers, and restricts methods to GET, HEAD, and POST.
navigate - Used only by HTML navigation. A navigate request is created only while navigating between documents.
websocket - Used only when establishing a WebSocket connection.
Сравниваем это с сообщением об ошибке. Заодно читаем примеры useFetch() и обычного fetch(), видим, что там просто передаётся вторым параметром объект с настройками. Т.е. должно быть достаточно добавить второй параметр{mode: "no-cors"}
, как и советуется в сообщении об ошибке.
Пять минут гуглежа. Пять минут, Карл!
Вот хватит этого или нет, уже второй вопрос...