Вопрос или проблема
Я создал скриптованный REST API, и сейчас к нему получают доступ другие приложения. Когда я обращаюсь к этому же URL через Postman с той же информацией аутентификации, заголовками и телом, он возвращает 200 (нормальный ответ).
Однако, когда к нему обращается другое приложение:
сервер: snow_adc
Дата:—
Тип контента:text/html
Длина содержимого:1XX
Соединение:keep-alive
Расположение:https://www.servicenow.com
тело ответа:
301 Место нахождения навсегда
301 Место нахождения
навсегда
snow_adc
Я уже проверил настройки контроля доступа по IP-адресам, но это, похоже, не причина. Мог бы кто-нибудь сказать, что вызывает этот 301 ответ?
Ответ или решение
Существует несколько причин, по которым ваш Scripted REST API на ServiceNow может возвращать ответ с кодом 301 (Moved Permanently) при доступе из другого приложения, в то время как запросы из Postman, выполняемые с теми же параметрами, проходят успешно. Вот несколько шагов по диагностике и решению данной проблемы:
-
Проверка URL: Убедитесь, что URL, который используется другим приложением, точно совпадает с тем, который вы используете в Postman. Проверьте наличие опечаток, лишних символов или неверных параметров. Иногда проблема может заключаться в том, что используется старый или неправильный URL.
-
Проверка Протокола: Убедитесь, что приложение, которое вызывает API, использует правильный протокол (HTTP или HTTPS). Если ваш сервер настроен на перенаправление с HTTP на HTTPS, это может быть причиной 301. В таком случае убедитесь, что ваш код обращается к API с правильным протоколом.
-
Параметры Запроса: Проверьте, какие параметры передаются в запросе от другого приложения. Возможно, некоторые параметры обязательны для правильной обработки на сервере, и их отсутствие может вызывать перенаправление.
-
Заголовки Запроса: Убедитесь, что все необходимые заголовки (например,
Authorization
,Content-Type
, и прочие) правильно передаются в запросе. Даже если в постман они совпадают, убедитесь, что в другом приложении их отправляют идентично. -
Настройки Firewall и Proxy: Проверьте настройки межсетевого экрана (firewall) и прокси-серверов. Возможно, они перенаправляют запрос просто потому, что источник запроса находится вне доверенной сети.
-
Логи серверов: Посмотрите логи вашего ServiceNow для более детальной информации о том, что происходит при получении запроса. Это может дать подсказки о причинах перенаправления.
-
Проверка Доступа: Убедитесь, что у приложений есть доступ к API на уровне платформы. Используйте контролы доступа (ACLs) для проверки, может ли внешний источник получать доступ к вызываемым ресурсам.
-
Процесс перенаправления: Иногда перенаправление может быть связано и с настройками самого сервера ServiceNow. Проверьте в настройках, настроены ли какие-либо автоматические перенаправления на уровень приложений.
Если после проверки всех этих моментов проблема остается нерешенной, рекомендуется обратиться в техническую поддержку ServiceNow с полным описанием проблемы и примерами запросов, чтобы они могли помочь в диагностике проблемы более детально.