код ответа сервера 400 web сервис 1с

Ошибка 400 при работе с HTTPs соединением

До перехода на HTTPs, обращался к веб-сервису без проблем по HTTP соединению (авторизация доменная):

Когда сделали HTTPs, то доделал строку соединения до вида:

Методы веб-сервиса и структура базы веб-сервиса не менялась. Просто администраторы сделали HTTPs.

Теперь при выполнении PUT-запроса получаю ошибку 400. Подскажите, пожалуйста, в чем может быть дело? Проблема на стороне веб-сервиса или я что-то не правильно указал в HTTPСоединении?

HTTP Error 400. The request verb is invalid.

(0) > The request verb is invalid

Не надо в него PUT, не хочет он этого.

(1) а ведь до этого (до перехода на HTTPs) именно PUT-запрос происходил из 1С в сервис и все отлично было.

К администратору надо обратиться?)

(2) Не знаю, что у вас там под веб-сервисом понимается, но SOAP, он какбе вообще-то POST подразумевает.

Пытай админов, почему типы запросов стали по разному обрабатываться. А то сейчас окажется что, например, перед аппликейшн сервером возник какой нить энджинх для поддержки SSL со своими представлениями о мире.

(3) не совсем понимаю в веб-технологиях, но разработчики веб-сервиса сделали сервис не в 1С. Сказали выгружать данные в сервис PUT-запросами, а тело запроса в формате JSON.

До HTTPs, все отлично работало. Вчера перевели на защищенное соединение и пипец. походу надо копать именно сам сервис, что-то в нем случилось.

Источник

Пример создания HTTP-сервисов на платформе «1С:Предприятие»

В этой статье разбираются демонстрационные HTTP-сервисы, созданные в демонстрационной конфигурации «Управляемое приложение» для платформы «1С:Предприятие» версии 8.3.5 и старше.

Цель статьи – помочь разобраться с использованием технологии HTTP-сервисов и показать практическое применение некоторых неочевидных механизмов.

Демонстрационная база «Управляемое приложение» представляет собой простую конфигурацию, в которой создано большинство объектов, которые могут понадобиться при автоматизации деятельности небольшой торговой фирмы. В частности, в ней присутствует справочник «Товары». Элементами этого справочника мы будем управлять при помощи HTTP-сервиса. Такой сценарий может возникнуть, например, при интеграции с интернет-магазином или другой корпоративной ИС, в которую заносится первичная информация о товарах.

Для удобства изучения описываемых HTTP-сервисов рекомендуется включить авторизацию ОС при публикации на веб-сервере и настроить пользователю с ролью «Администратор» использование windows-аутентификации от имени пользователя ОС, под которым будет проходить изучение.

HTTP-сервис «Товары»

HTTP-сервис «Товары» написан в REST-стиле. Он позволяет получать и удалять элементы и группы в справочнике товаров. Доступ к элементу осуществляется с помощью его пути в иерархии.

Например, для того чтобы получить информацию о товаре «Ряженка» с кодом 000000027, входящем в группу «Молочные» с кодом 000000099, которая входит, в свою очередь в группу «Продукты» с кодом 000000011, в браузере надо будет набрать http:// /hs/Products/000000011/000000099/000000027. Если база опубликована по пути http://localhost:8090/Platform8Demo/, то путь будет:

http://localhost:8090/Platform8Demo/ hs /Products/000000011/000000099/000000027.

Из чего состоит путь? Рассмотрим по частям:

В нашем случае у сервиса один дочерний объект шаблон URL. В свойстве «Шаблон» этого объекта записана строка “/*». Звездочка – это специальное значение, указывающее на то, что к данному шаблону подходят любые URL. В нашем случае необходимость использования такого шаблона (т.е. по сути отказа от ограничения URL) обусловлена произвольной глубиной иерархии товаров.

У нашего шаблона URL имеются два дочерних объекта, соответствующих HTTP-методам GET (получение) и DELETE (удаление). Именно в них указаны обработчики, которые будут вызываться при обращении к HTTP-сервису.

Для обработки запроса с использованием HTTP-метода GET (а именно такой будет создан, если вставить указанные выше URL в браузер) используется функция ПутьКТоваруGET. Рассмотрим эту функцию немного подробнее:

Сформированное XML-представление используется в ответе сервиса:

HTTP-сервис «ОписанияТоваров»

HTTP-сервис «ОписанияТоваров» предназначен для получения и редактирования информации о товарах. Он написан в RPC (Remote Procedure Call) стиле, похожем на SOAP. В качестве дополнительного условия также предположим, что заказчик, для которого мы разрабатываем конфигурацию, потребовал предусмотреть наличие нескольких версий API где-то в будущем.

Обращение к сервису выполняется при помощи запросов с использование метода POST к URL следующего вида:

Рассмотрим, из чего состоит путь:

код ответа сервера 400 web сервис 1с

код ответа сервера 400 web сервис 1с

Видно, что сервер передал описание товара в формате html.

Рассмотрим, как реализован сервис. Объект метаданных HTTP-сервиса имеет единственный дочерний шаблон URL, в котором прописан следующий шаблон:

код ответа сервера 400 web сервис 1с

Т.к. у нас пока нет разных версий сервиса, сегмент с номером версии фиксирован, а вот второй сегмент может принимать разные значения, соответствующие именам методов. В коде получение имени метода выглядит следующим образом:

Обращаем внимание, что коллекция «ПараметрыURL» запроса содержит единственное значение – согласно количеству сегментов, которые могут принимать разные значение.

Для возврата описания товара мы устанавливаем тело запроса:

Аналогично, для установки описания товара мы получаем его из запроса:

При установке описания из тела запроса мы проводим минимальную проверку корректности того, что прислал нам клиент, в данном случае – только типа содержимого, изучая заголовок «Content-type».

Для того чтобы протестировать установку тела запроса достаточно заполнить его в Fiddler:

код ответа сервера 400 web сервис 1с

Отладка кода HTTP-сервиса

Отладка кода HTTP-сервиса аналогична отладке код SOAP веб-сервиса. Для включения отладки нужно:

Разрешение отладки на веб-сервере

Для разрешения отладки на веб-сервере нужно перейти на вкладку «Прочие» диалога публикации на веб-сервере, установить флаг «разрешить отладку» и указать адрес отладчика. Для локальной отладки можно указать tcp://localhost

код ответа сервера 400 web сервис 1с

То же самое можно сделать вручную, исправив vrd-файл, см документацию.

Включение автоматического подключения

Для того чтобы платформа автоматически подключалась для отладки к вызываемым HTTP-сервисам нужно:

Помните, что флажок следует устанавливать при каждом запуске конфигуратора, в котором требуется отладка HTTP-сервисов.

Заключение

В статье рассмотрены основные аспекты программирования HTTP-сервисов в «1С:Предприятии», в частности:

Также показано, как можно их тестировать при помощи программы Fiddler. Более полные справочные материалы можно найти в ИТС по постоянному адресу.

Источник

Http 400 Bad Request (Запрос загона слишком долго) ответы на запросы HTTP

Если запрос HTTP, который нуждается в проверке подлинности Kerberos, отправляется на веб-сайт, который находится на службы IIS (IIS) и настроен на использование проверки подлинности Kerberos, загон http-запроса будет очень длинным. Эта статья поможет вам обойти ошибку HTTP 400, которая возникает при слишком долгом заглаве http-запроса.

Оригинальная версия продукта: Windows Server 2016
Исходный номер КБ: 2020943

Симптомы

Запрос HTTP, который нуждается в проверке подлинности Kerberos, отправляется из браузера на веб-сайт, который находится на сайте IIS. Веб-сайт настроен на использование проверки подлинности Kerberos. Однако вместо получения ожидаемой веб-страницы вы получаете сообщение об ошибке, напоминаемую следующее:

HTTP 400 — плохой запрос (слишком длинный загон запроса)

Этот ответ может быть создан любым http-запросом, который включает Windows удаленного управления (WinRM).

Причина

Эта проблема может возникнуть, если пользователь является членом многих групп пользователей Active Directory.

Запрос HTTP на сервер содержит маркер Kerberos в WWW-Authenticate загонах. Размер загона увеличивается вместе с числом групп пользователей. Если загона HTTP или размер пакета увеличивается за пределы, настроенные на сервере, сервер может отклонить запрос и отправить сообщение об ошибке в качестве ответа.

Обход 1. Уменьшение числа групп Active Directory

Уменьшите число групп Active Directory, в которые входит пользователь.

Обход 2. Установите записи реестра MaxFieldLength и MaxRequestBytes

Увеличение параметров записей реестра и записей реестра на сервере, чтобы заглавы запросов пользователя не MaxFieldLength MaxRequestBytes превышали эти значения. Чтобы определить соответствующие параметры, используйте следующие вычисления:

Вычислять размер маркера Kerberos пользователя с помощью формулы, описанной в следующей статье:
Проблемы с проверкой подлинности Kerberos, когда пользователь принадлежит к многим группам.

Установите значение И на сервере MaxFieldLength до 4/3 * T-bytes, где T — это размер маркера пользователя MaxRequestBytes в bytes. HTTP кодирует маркер Kerberos с помощью кодирования base64.

Это заменяет каждые три bytes в маркере с четырьмя базовыми64-кодируемыми bytes. Изменения, внесенные в реестр, не вступает в силу, пока не перезапустите службу HTTP. Кроме того, может потребоваться перезапустить все связанные службы, например службы IIS.

В зависимости от среды приложения можно также решить эту проблему, настроив веб-сайт на использование Windows NT lan-менеджера (NTLM) вместо Kerberos. В некоторых средах приложений для делегирования необходимо использовать проверку подлинности Kerberos. Мы считаем проверку подлинности Kerberos более безопасной, чем NTLM. Мы рекомендуем не отключать проверку подлинности Kerberos до рассмотрения последствий для безопасности и делегирования.

Дополнительные сведения

По умолчанию запись реестра MaxFieldLength не существует. В этой записи указывается максимальное ограничение размера каждого загона http-запроса. Запись реестра указывает верхнее ограничение для общего размера строки запроса и MaxRequestBytes заглавных записей. Как правило, эта запись реестра настраивается вместе с MaxRequestBytes записью реестра. Если MaxRequestBytes значение ниже MaxFieldLength значения, значение MaxFieldLength корректируется. В больших средах Active Directory пользователи могут испытывать ошибки с логотипами, если значения для обеих этих записей не задают достаточно высокого значения.

Для IIS 6.0 и более поздних этапов клавиши реестра и реестра расположены в следующем под MaxFieldLength MaxRequestBytes ключе:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

Установите ключевые значения, как показано в следующей таблице:

ИмяТип значенияЗначение
MaxFieldLengthDWORD(4/3 * T bytes) + 200
MaxRequestBytesDWORD(4/3 * T bytes) + 200

Вы также можете установить ключи реестра к максимальным значениям, как показано в следующей таблице. Рассмотрите все возможные последствия безопасности, прежде чем вносить изменения в параметры реестра.

ИмяТип значенияЗначение
MaxFieldLengthDWORD65536 (декабрь) или 10000 (Hex)
MaxRequestBytesDWORD16777216 (dec) или 1000000 (Hex)

Изменение этих ключей реестра следует считать крайне опасным. Эти ключи позволяют отправить более крупные пакеты HTTP в IIS. Это, в свою очередь, может Http.sys использовать больше памяти. Таким образом, такие изменения могут повысить уязвимость компьютера к вредоносным атакам.

Если установлено максимальное значение 64 КБ, значение реестра должно быть задано MaxFieldLength MaxTokenSize 3/4 * 64 = 48 КБ. Дополнительные сведения о параметре см. в ссылке Проблемы с MaxTokenSize проверкой подлинности Kerberos,когда пользователь принадлежит к многим группам.

Источник

Что такое ошибка 400 Bad Request и как ее исправить

код ответа сервера 400 web сервис 1с

Раздражает, когда какой-то сайт не загружается и отзывается непонятными ошибками. Обычно они сопровождаются одним из десятков HTTP-кодов, которые как раз намекают на характер сбоя, а также его вероятные причины.

В этом материале поговорим об ошибке 400 Bad Request. Почему она появляется и как ее исправить.

Чуть подробнее об ошибке 400

Как и другие коды, начинающиеся на четверку, 400 Bad Request говорит о том, что возникла проблема на стороне пользователя. Зачастую сервер отправляет ее, когда появившаяся неисправность не подходит больше ни под одну категорию ошибок.

Стоит запомнить — код 400 напрямую связан с клиентом (браузером, к примеру) и намекает на то, что отправленный запрос со стороны пользователя приводит к сбою еще до того, как его обработает сервер (вернее, так считает сам сервер).

Из-за чего всплывает Bad Request?

Есть 4 повода для возникновения ошибки сервера 400 Bad Request при попытке зайти на сайт:

Читайте также

код ответа сервера 400 web сервис 1с

код ответа сервера 400 web сервис 1с

Исправляем ошибку 400 Bad Request на стороне клиента

Так как ошибка 400 в 99 случаев из 100 возникает на стороне клиента, начнем с соответствующих методов. Проверим все элементы, участвующие в передаче запроса со стороны клиента (браузера).

Проверяем адрес сайта

Банальщина, но необходимая банальщина. Перед тем как бежать куда-то жаловаться и предпринимать более серьезные шаги, повнимательнее взгляните на ссылку в адресной строке. Может, где-то затесалась опечатка или вы случайно написали большую букву вместо маленькой. Некоторые части адреса чувствительны к регистру.

А еще стоит поискать запрашиваемую страницу через поисковик, встроенный в сайт. Есть вероятность, что конкретная страница куда-то переехала, но сервер не может показать подходящий HTTP-код в духе 404 Not Found. Если, конечно, сам сайт работает.

Сбрасываем параметры браузера

Этот метод срабатывает, если сервер отказывается принимать запросы из-за «битых» куки или других данных. Дело в том, что сайт использует куки-файлы, чтобы хранить информацию о пользователе у него же в браузере. При входе конкретного человека на ресурс, он пытается распознать куки и сравнить информацию с той, что уже есть на сервере.

Иногда случается, что куки-файлы одного или нескольких пользователей вступают в конфликт. В таком случае надо открыть настройки браузера, а потом удалить весь кэш, куки и прочие связанные элементы.

В зависимости от браузера процесс удаления куки-файлов может немного отличаться. В Chrome это работает так:

Загружаем файл подходящего размера

Если ошибка 400 Bad Request появляется при попытке загрузить на сайт какой-нибудь файл, то стоит попробовать загрузить файл поменьше. Иногда вебмастера ленятся грамотно настроить ресурс, и вместо понятного объяснения вроде «Загружаемые файлы не должны быть размером больше 2 мегабайт» люди получают Bad Request. Остается только гадать, какой там у них лимит.

Устраняем проблемы, связанные с Windows и сторонним софтом

Помимо браузера, на работу сети могут влиять другие программные продукты (экраны, защищающие от «непонятных подключений»). И вирусы. Да и сама Windows может стать проблемой. Почти любой ее компонент. Поэтому надо бы проделать следующее:

Ищем проблему на стороне сервера

Если что-то происходит на стороне ресурса, то это редко заканчивается ошибкой 400. Но все-таки есть несколько сценариев, при которых клиента обвиняют в сбое зря, а настоящая вина лежит на сервере.

Проверяем требования к HTTP-заголовкам

Пока настраиваешь сайт, несложно допустить ошибку или даже парочку. Возможно, требования к HTTP-заголовком указаны некорректно, и сервер ожидает запросы с ошибками, которые по объективным причинам не может распознать адекватно. Тогда администратору стоит перепроверить ожидаемые заголовки на своем сайте или в приложении.

Удаляем свежие обновления и плагины

Иногда ошибка 400 Bad Request появляется после обновления CMS или установки новых плагинов. Если у вас она появилась из-за этого, то наиболее логичное решение — откатиться до более ранней версии CMS и удалить все новые плагины.

Главное, перед этим сделать резервную копию данных. И перед установкой обновлений тоже стоило бы.

Проверяем состояние базы данных

Некоторые сторонние расширения для того же WordPress получают полный доступ к ресурсу и имеют право вносить изменения даже в подключенную базу данных. Если после удаления свежих плагинов ошибка 400 никуда не исчезла и появляется у всех, кто пытается зайти на сайт, стоит проверить, в каком состоянии находится база данных. Нужно вручную проверить все записи на наличие подозрительных изменений, которые могли быть сделаны установленными расширениями.

Исправляем ошибки в коде и скриптах

Ничего из вышеперечисленного не помогло? Тогда осталось проверить свой код и работающие скрипты. Лучше провести дебаггинг вручную и не надеяться на помощь компьютера. Сделать копию приложения или сайта, потом пошагово проверить каждый отрезок кода в поисках ошибок.

В крайнем случае придется кричать «полундра» и звать на помощь техподдержку хостинга. Возможно, возникли сложности на их стороне. Тогда вообще ничего не надо будет делать. Просто ждать, пока все исправят за вас.

На этом все. Основные причины появления 400 Bad Request разобрали. Как ее лечить — тоже. Теперь дело за вами. Пользуйтесь полученной информацией, чтобы больше не пришлось мучиться в попытках зайти на нужный ресурс.

Источник

Ошибка 400: что такое и как исправить

Интернет ― это сложная схема взаимодействия устройств. Между компьютером и сервером сайта легко могут появиться проблемы с сетью: код ошибки 400, 406, 410. В этой статье мы рассмотрим ошибку 400.

Что значит ошибка 400

Все ошибки, которые начинаются на 4, говорят о том, что проблема на стороне пользователя.

Ошибка 400 bad request переводится как «плохой запрос». Она возникает тогда, когда браузер пользователя отправляет некорректный запрос серверу, на котором находится сайт.

Чаще всего проблема действительно обнаруживается на стороне пользователя, но бывают и исключения, когда проблема на стороне провайдера или владельца сайта.

Причины появления ошибки 400

Как исправить ошибку 400

Перед тем как заниматься серьёзной настройкой устройства, проверьте правильность написания URL-адреса. Если ссылка была скопирована с сайта, попробуйте найти нужную страницу по ключевым словам. Как только вы найдёте правильную ссылку, сайт заработает.

Если причина не в этом, переходите к другим настройкам, которые описаны ниже.

Очистите файлы cookies и кэш браузера

Файлы куки и кэш созданы для того, чтобы запоминать сайты и персональные данные пользователя. За счёт этой памяти ускоряется процесс повторной загрузки страницы. Но cookies и кэш, которые хранят данные предыдущей сессии, могут конфликтовать с другим токеном сессии. Это приведёт к ошибке 400 Bad Request.

Очистите кэш браузера по инструкции и попробуйте зайти на страницу заново.

Очистить кэш и куки можно не только вручную, но и с помощью программ CCleaner и Advanced SystemCare.

CCleaner ― эффективное решение для оптимизации работы системы. За пару кликов можно очистить кэш и cookies в нескольких браузерах одновременно. Также можно быстро почистить все временные файлы, которые могут замедлять работу системы. Интуитивный интерфейс не требует специальных знаний:

Ещё одним популярным приложением для оптимизации ПК является Advanced SystemCare. Эта программа поможет удалить ненужные файлы, очистить реестр, ускорить работу системы, освободить память и место на диске. Также она может контролировать безопасность просмотра веб-страниц, защищая конфиденциальные данные, блокируя вредоносные веб-сайты и предотвращая майнинг криптовалюты.

Очистите кэш DNS

DNS-кэш — это временная база данных вашего компьютера, которая хранит IP-адреса часто посещаемых веб-сайтов. Такая база данных ускоряет связь с сервером.

Вы можете изменить DNS, однако данные из кэша отправляют на старый IP-адрес. После очистки браузер начнёт обращаться к новому IP-адресу. Чаще всего проблема несоответствия DNS приводит к ошибке 502, но также может появиться ошибка 400.

В зависимости от вашей операционной системы очистите кэш по одной из инструкций.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *