Почтальон, разрешающий "Недопустимый запрос CORS" для запроса POST

Я только начал использовать Postman для тестирования API, с которым я интегрирую.

У меня есть следующая ошибка, которая продолжает показывать

Недействительный запрос CORS

Обратите внимание на следующее:

  • API использует аутентификацию маркера предъявителя (OAuth2). у меня есть это работая без проблем.
  • Я успешно получаю токен-носитель, назначаю его переменной среды и затем пытаюсь использовать его для операций RESTful.
  • Проблема заключается в последующей операции RESTful, которая использует токен.
  • Когда я использую старый токен (через операцию POST), он по праву говорит, что он истек и не разрешен.
  • Когда я создаю новый и пытаюсь запустить успокоительный вызов, он дает мне ошибку Invalid CORS request.
  • Используя cURL, у меня нет проблем. Но я разочарован Postman.

Что я нашел до сих пор:

На всякий случай у кого-то еще есть такая же проблема, вот как решить Это. Перейдите в https://www.getpostman.com/docs/capture в вашем хроме браузер. Нажмите на расширение перехватчика, а затем выберите хром. После его добавления появляется новый значок справа от браузера и почтальона, который выглядит как светофор. В почтовом клике это и становится зеленым. Затем добавьте заголовок для каждого запроса, идущего в третий свет. Каждый заголовок состоит из имени заголовка и значения. Начните печатать по имени заголовка и списку разрешенных заголовков http. . Выберите "Происхождение". В ячейке для значения просто введите полный URL вашего сервера. (Не забудьте "http://" или "https://" ).

  1. Каков ожидаемый ответ на недопустимый запрос CORS? - Лучшее объяснение, которое я видел до сих пор при ошибках CORS.

Другой материал говорит о Access-Control-Allow-Method header, preflight requests

... и есть иллюстративная блок-схема Apache Tomcat потока CORS.

введите описание изображения здесь

Ответ 1

Вот ответ, который вы нашли снова:

На всякий случай у кого-то еще есть такая же проблема, вот как ее решить. Перейдите в https://www.getpostman.com/docs/capture в своем браузере Chrome. Нажмите на расширение перехватчика, а затем выберите add to chrome. После его добавления появляется новый значок справа от браузера и почтальона, который выглядит как светофор. В почтальоне щелкните по нему, и он станет зеленым.

... С выделенным жирным шрифтом:

Затем добавьте заголовок к вашему запросу. Ключ заголовка должен быть "Origin", а заголовок Значение должен быть полным URL вашего сервера (не забывайте http:// или https://).

Обратите внимание, что Chrome/Postman не позволит вам добавлять заголовок с ключом происхождения без плагина Interceptor.

Также обратите внимание, что по крайней мере в моей системе значок Interceptor больше не похож на светофор.

Ответ 2

Если ваш внутренний код службы поддержки проверяет источник запроса (просто чтобы избежать атаки CORS), вы можете столкнуться с этой проблемой при тестировании вашего Rest API через почтальона.

Как решить это.?

Вам необходимо установить плагин для Chrome с именем Postman Interceptor (https://chrome.google.com/webstore/detail/postman-interceptor/aicmkgpgakddgnaphhhpliifpcfhicfo?hl=en).

После успешной установки этого плагина, в вашем клиенте Postman вы увидите маленькую иконку Postman Interceptor, вам нужно включить его, чтобы включить.

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

RequestHeader Key "Origin" RequestHeader Value "базовый URL вашего приложения"

Проверьте это изображение

Теперь вы сможете преодолеть проблемы с CORS, с которыми вы сталкиваетесь!

Ответ 3

С приложением Chrome, идущим по пути айсбергов - есть ли способ решить эту проблему в нативном приложении?

Ответ 4

Значение заголовка "Origin", установленного в запросе Postman, должно быть разрешено в API-интерфейсе. Например, использование Spring Boot для API должно иметь следующее:

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Value("${cors.allowedOrigins}")
    private String allowedOrigins;

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowedOrigins(allowedOrigins)
            .allowedMethods("*")
            .allowedHeaders("*");
    }

}

где allowOrigins задается с помощью свойства application.properties cors.allowedOrigins имеющего список разрешенных источников, разделенных запятыми, например:

cors.allowedOrings=http://localhost:8080,http://example.com

и установите значение 'Origin' в Postman для любого URL из cors.allowedOrigins

Ответ 5

Похоже, наш сервер видит из почтового HTTP-запроса POST о том, что orgin недействителен, поскольку он поступает из Postman как "chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop"

Не уверен, почему или как решить на стороне клиента/почтальона. Кажется, наш сервер корректно отвергает его как есть и выдает 403.

Ответ 6

Вы можете попробовать новую версию PostMan. Для меня это работает после обновленной версии почтальона.