WSO2 — Максимально увеличить разрешенную длину URI

#url #request #wso2 #uri

Вопрос:

У нас есть API, опубликованный на WSO2. Это работает идеально.

Когда я отправляю свой запрос, как на картинке ниже, он отвечает 200, как я и хотел: введите описание изображения здесь

Я просто хотел проверить свой запрос, добавив еще deleted=false один запрос. Таким образом, я могу отправлять запрос до тех пор, пока размер запроса не составит 5,75 КБ. Я вижу, что все еще 200 в порядке. Вы можете видеть на картинке ниже: введите описание изображения здесь

Но, если я достигну размера запроса 5,76 КБ, добавив еще 1 deleted=false запрос, я увижу эту ошибку: введите описание изображения здесь

Когда я искал в Интернете, я увидел, что the REST API supports Uniform Resource Locators (URLs) with a length of up to 6000 characters.

Мой вопрос в том, как я могу продлить этот лимит? Есть ли какой-нибудь способ сделать это ?

Ответ №1:

Согласно общему скриншоту, похоже, что сам сервер отвечает с кодом состояния 400 неверных запросов. Менеджер API не имеет никаких ограничений на большие параметры запроса в URI. Таким образом, эта ошибка возникает из вашей реальной внутренней службы, которая не может обработать большой запрос.

Чтобы подтвердить это поведение, вы можете включить проводные журналы на сервере API Manager и устранить неполадки в поведении. Если запрос отправляется на серверную часть, и Серверная часть отвечает 400 ошибочными средствами запроса, серверная часть способна обрабатывать запросы только до 5,75 КБ в вашем случае.

Кроме того, в качестве альтернативной проверки вы также можете попробовать вызвать фактический URL-адрес серверной службы у почтальона (прямой вызов, а не через WSO2) и проверить поведение при больших запросах.

Ниже приведено несколько документов, связанных с включением ПРОВОДНЫХ журналов и пониманием ПРОВОДНЫХ журналов

Комментарии:

1. Я попробовал альтернативный способ, и он принимает 6,63 КБ в качестве примера. Вы точно уверены, что WSO2 APIM не имеет никаких ограничений ?

2. Отлично!!. Менеджер API добавит несколько заголовков, таких как User-Agent , Connection , и т. Д., И X-JWT-Assertion (если включен серверный JWT) при отправке запроса на серверную часть. Возможно, вам захочется немного увеличить количество внутренних серверов, чтобы принять ожидаемый лимит в соответствии с вашими требованиями.

3. Он X-JWT-Assertion используется для передачи сведений о пользователе на внутренний сервер. Вы можете узнать больше об этом здесь . Если вы этого не хотите, вы можете просто отключить это в настройках. Кроме того, другие заголовки являются частью процесса диспетчера API (большинство из них связаны с подключением HTTP). Так что они все равно будут отправлены.

4. Это два разных знака. Не рекомендуется передавать Маркер доступа для авторизации на серверную часть, если у вас нет особых требований. Поэтому, когда вы хотите передать немного информации о конечном пользователе и API, вы можете использовать X-JWT-Assertion токен для отправки этих сведений в серверную часть. Это другой токен, который создается во время выполнения вызова API. Кроме того, если вы этого не хотите X-JWT , вы можете просто отключить это и продолжать передавать фактический токен доступа на серверную часть. Также обратите внимание, что X-Forwarded и X-Amazon заполняются из LB, а не APIM.

5. Вы должны отключить X-JWT-Assertion его в TOML конфигурации. Нет никаких доступных конфигураций пользовательского интерфейса, чтобы отключить это. Поэтому вам нужно открыть deployment.toml и в разделе [apim.jwt] сделать enable ложное.