#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
ложное.