Ошибка 403 при использовании MediaWiki REST API для сравнения версий ⇐ Javascript
Ошибка 403 при использовании MediaWiki REST API для сравнения версий
Я создаю для себя простой инструмент, который будет отображать разницу между ревизиями в Википедии, используя (путем отправки запроса к WikiMedia REST API, как описано в документации API здесь: Reference#Compare редакции).
Вот пример кода, который извлекает нужный мне JSON:
const url = "https://en.wikipedia.org/w/rest.php/v1/ ... 1157658266"; let json = await fetch(url).then(resp=>{ return resp.json(); }); консоль.log(JSON) Этот код работает в локальном REPL узла, или аналогичным образом он работает, если я направляю свой браузер на и использую консоль в браузере для запуска кода. Аналогично, я могу просто свернуть этот URL-адрес и вывести данные на свой терминал.
Однако я получаю ошибку 403, если использую тот же код на своем сайте (или, что то же самое, если я использую консоль в браузере для запуска кода при указании на другой сайт). чем википедия). Вот ошибка, которую я получаю:
GET https://en.wikipedia.org/w/rest.php/v1/ ... 1157658266 403
{ошибка: 'rest-cross-origin-anon-write', httpCode: 403, httpReason: 'Запрещено'} Заголовок ошибки, кажется, указывает на то, что мне запрещен доступ, поскольку я пытаюсь писать с сайта с перекрестным происхождением, но запрос, который я делаю, является простым запросом только для чтения, не так ли? Согласно справочной странице, указанной выше, ошибка 403 возвращается, когда «Редакция не является общедоступной». Однако он явно общедоступен, поскольку я могу получить к нему доступ из любого браузера или curl без аутентификации.
[Обратите внимание: если я сделаю какие-либо другие запросы с использованием этого API, например, получу сведения об одной ревизии (как в документации здесь: Reference#Get_revision) с помощью URL https://en.wikipedia.org/w /rest.php/v1/revision/1157633768/bare, я не получаю эту ошибку. Это только при запросе маршрута {from}/compare/{to}.]
Я пробовал добавить ?origin=* в URL-адрес как предлагает сайт MediaWiki Action API здесь. Я знаю, что это другой API, но попробовать все же стоило.
Я мало что знаю о запросах между источниками, но мне кажется, что это должно быть просто. Я не пытаюсь делать ничего, требующего аутентификации.
Я создаю для себя простой инструмент, который будет отображать разницу между ревизиями в Википедии, используя (путем отправки запроса к WikiMedia REST API, как описано в документации API здесь: Reference#Compare редакции).
Вот пример кода, который извлекает нужный мне JSON:
const url = "https://en.wikipedia.org/w/rest.php/v1/ ... 1157658266"; let json = await fetch(url).then(resp=>{ return resp.json(); }); консоль.log(JSON) Этот код работает в локальном REPL узла, или аналогичным образом он работает, если я направляю свой браузер на и использую консоль в браузере для запуска кода. Аналогично, я могу просто свернуть этот URL-адрес и вывести данные на свой терминал.
Однако я получаю ошибку 403, если использую тот же код на своем сайте (или, что то же самое, если я использую консоль в браузере для запуска кода при указании на другой сайт). чем википедия). Вот ошибка, которую я получаю:
GET https://en.wikipedia.org/w/rest.php/v1/ ... 1157658266 403
{ошибка: 'rest-cross-origin-anon-write', httpCode: 403, httpReason: 'Запрещено'} Заголовок ошибки, кажется, указывает на то, что мне запрещен доступ, поскольку я пытаюсь писать с сайта с перекрестным происхождением, но запрос, который я делаю, является простым запросом только для чтения, не так ли? Согласно справочной странице, указанной выше, ошибка 403 возвращается, когда «Редакция не является общедоступной». Однако он явно общедоступен, поскольку я могу получить к нему доступ из любого браузера или curl без аутентификации.
[Обратите внимание: если я сделаю какие-либо другие запросы с использованием этого API, например, получу сведения об одной ревизии (как в документации здесь: Reference#Get_revision) с помощью URL https://en.wikipedia.org/w /rest.php/v1/revision/1157633768/bare, я не получаю эту ошибку. Это только при запросе маршрута {from}/compare/{to}.]
Я пробовал добавить ?origin=* в URL-адрес как предлагает сайт MediaWiki Action API здесь. Я знаю, что это другой API, но попробовать все же стоило.
Я мало что знаю о запросах между источниками, но мне кажется, что это должно быть просто. Я не пытаюсь делать ничего, требующего аутентификации.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение