Перейти к содержанию
IPS Invision Community 🇷🇺

REST API CORS Fixaroo


qwert

Рекомендуемые сообщения

REST API CORS Fixaroo


Этот плагин предназначен для решения очень специфической проблемы, которая возникает, когда вы пытаетесь использовать OAuth2 и JavaScript вместе в приложении браузера.

До настоящего времени это было неосуществимо, поскольку использование заголовка Authorization в запросе заставляло бы браузер отправлять предварительный запрос CORS конечной точке. Этот запрос является запросом OPTIONS, и поскольку он не является GET, PUT, POST или DELETE; По умолчанию IPS обрабатывает его как запрос GET. В результате предварительный запрос не выполняется, и пользователь полагается на какой-либо прокси-сервер для отправки запроса с помощью PHP или другого серверного языка.

Этот плагин расширяет класс диспетчера API и обрабатывает и генерирует действительный ответ предполетного запроса CORS со следующими заголовками:

  • Access-Control-Allow-Methods

Генерируется автоматически из методов вызываемой конечной точки. Если конечная точка поддерживает GET и POST, заголовок разрешенных методов будет содержать GET, POST, но не PUT или DELETE.

  • Access-Control-Allow-Headers

Генерируется автоматически из заголовка запроса «Access-Control-Request-Headers», чтобы разрешить передачу любых заголовков в запросе. Это не самый безопасный метод, но это версия 1.0.0, возможно, я буду реализовывать настройку для определенных заголовков в будущей версии.

  • Access-Control-Allow-Origin

Сгенерировано из настроек плагина (см. Скриншот). Он оценивает заголовок «Origin» (или «Referer») и, если запрос поступает от одного из доменов в белом списке в настройках плагина, он устанавливает значение заголовка «Access-Control-Allow-Origin» как домен запроса. В противном случае заголовок не будет установлен и запрос CORS не будет выполнен.

ПРИМЕЧАНИЕ. Установка «*» в качестве одного из разрешенных доменов разрешит запросы CORS из любого домена. Это создает возможную уязвимость XSS, и я бы не рекомендовал устанавливать эту опцию.

Оригинальный текст перевода:

Скрытый текст

This plugin aims to tackle a very specific issue which occurs when you try to use OAuth2 and JavaScript together in a browser application.

Until now, this was not really feasible as the use of the Authorization header in the request will cause the browser to send a CORS pre-flight request to the endpoint. This request is an OPTIONS request and since it is not GET, PUT, POST or DELETE; IPS defaults to handling it as a GET request. As a result, the pre-flight request fails and causes the user to rely on a proxy of some sort to send the request with PHP or another server-side language.

This plugin extends the API dispatcher class and handles processing and generating a valid CORS pre-flight request response with the following headers:

Access-Control-Allow-Methods
Generated automatically from the methods of the endpoint being called. If the endpoint supports GET and POST, the allowed methods header will contain GET, POST but not PUT or DELETE.

Access-Control-Allow-Headers
Generated automatically from the request "Access-Control-Request-Headers" header to allow any headers being passed in the request. This is not the most secure method but it is version 1.0.0, maybe I will implement a setting for specific headers in a future version.

Access-Control-Allow-Origin
Generated from the plugin settings (see attached screenshot). It evaluates the "Origin" (or "Referer") header and if the request comes from one of the whitelisted domains in the plugin settings, it will set the value of the "Access-Control-Allow-Origin" header to be the domain of the request. Otherwise, the header will not be set and the CORS request will fail.
NOTE: Setting "*" as one of the allowed domains will allow CORS requests from any domain. This creates a possible XSS vulnerability and I would not recommend setting that option.

 


  • Автор
    qwert
  • Добавлен
    28.05.2020
  • Категория
  • Разработчик
    Eltu
  • Локализация
    EN

 

Ссылка на комментарий

Создайте учетную запись или войдите, чтобы комментировать

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти
×
×
  • Создать...

Важная информация

Мы используем файлы cookie и другие средства сохранения предпочтений и анализа действий посетителей сайта. Нажмите «Принять», если даете согласие на это. Политика конфиденциальности - Условия использования

Вверх
Вверх