Как отправить заголовок Content-Type в GET

nicos77777

Client
Регистрация
04.04.2013
Сообщения
331
Благодарностей
16
Баллы
18
Как отправить заголовок Content-Type в GET? Никаким образом именно "Content-Type" не отправляется. И через C# тоже не отправляется. Помогите решить проблему. Заранее спасибо!

Если отправлять через кубик GET то не отправляется, если выполнять действия в браузере то Content-Type в трафике присутствует

Пример шаблона прикрепил
 

Вложения

  • 16,4 КБ Просмотры: 22
Последнее редактирование:

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113
  • Спасибо
Реакции: nicos77777 и Phoenix78

nicos77777

Client
Регистрация
04.04.2013
Сообщения
331
Благодарностей
16
Баллы
18
Он задаётся через отдельное поле в экшене и через отдельный параметр в методе, тут пример: https://zennolab.com/discussion/threads/acceptencoding-i-acceptlanguage-ne-otpravljat-pri-get-zaprose.67665/#post-470593
Вроде сделал все правильно, но сервер ругается на запрос(ему не хватает правильного Content-Type)

C#:
string url = "https://apis.pr-cy.ru/api/v2.1.0/tool-tasks/25aab258cf8dccf7be077c005330c112?filter[since]=0&include=tests";
string contentType = "application/vnd.api+json";

var resultHttpGet = ZennoPoster.HTTP.Request(
    method: ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.GET,
    url: url,
    content: string.Empty,
    contentPostingType: contentType,
    proxy: project.GetProxy(),
    Encoding: "UTF-8",
    respType: ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    Timeout: 30000,
    Cookies: string.Empty,
    UserAgent: project.Profile.UserAgent,
    UseRedirect: true,
    MaxRedirectCount: 5,
    AdditionalHeaders: new string[] {
        "Content-Type: " + contentType,
        "Accept: " + project.Profile.HTTPAccept,
        "Accept-Encoding: " + project.Profile.AcceptEncoding,
        "Accept-Language: " + project.Profile.AcceptLanguage,

    },
    DownloadPath: project.Directory,
    UseOriginalUrl: false,
    throwExceptionOnError: true,
    cookieContainer: project.Profile.CookieContainer,
    removeDefaultHeaders: true);

return resultHttpGet;
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113
Вроде сделал все правильно, но сервер ругается на запрос(ему не хватает правильного Content-Type)

C#:
string url = "https://apis.pr-cy.ru/api/v2.1.0/tool-tasks/25aab258cf8dccf7be077c005330c112?filter[since]=0&include=tests";
string contentType = "application/vnd.api+json";

var resultHttpGet = ZennoPoster.HTTP.Request(
    method: ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.GET,
    url: url,
    content: string.Empty,
    contentPostingType: contentType,
    proxy: project.GetProxy(),
    Encoding: "UTF-8",
    respType: ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    Timeout: 30000,
    Cookies: string.Empty,
    UserAgent: project.Profile.UserAgent,
    UseRedirect: true,
    MaxRedirectCount: 5,
    AdditionalHeaders: new string[] {
        "Content-Type: " + contentType,
        "Accept: " + project.Profile.HTTPAccept,
        "Accept-Encoding: " + project.Profile.AcceptEncoding,
        "Accept-Language: " + project.Profile.AcceptLanguage,

    },
    DownloadPath: project.Directory,
    UseOriginalUrl: false,
    throwExceptionOnError: true,
    cookieContainer: project.Profile.CookieContainer,
    removeDefaultHeaders: true);

return resultHttpGet;
Сравните с оригинальным в мониторе трафика или fiddler'е.

Вероятно вам вообще нужен POST и тело запроса.
 

nicos77777

Client
Регистрация
04.04.2013
Сообщения
331
Благодарностей
16
Баллы
18
Сравните с оригинальным в мониторе трафика или fiddler'е.

Вероятно вам вообще нужен POST и тело запроса.
POST запрос apis.pr-cy.ru отвергает, ему нужен именно GET, смотрел и в оригинальном мониторе и в fiddler
Screenshot_4.jpg
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113

nicos77777

Client
Регистрация
04.04.2013
Сообщения
331
Благодарностей
16
Баллы
18
Значит плохо сравнивали. Учитывайте так же, что постер пока не поддерживает TLS1.3 и HTTP2.
Отправляю через Composer в fiddler'е запрос и сервер мне отправляет правильный ответ.
Код:
GET
https://apis.pr-cy.ru/api/v2.1.0/tool-tasks/25aab258cf8dccf7be077c005330c112?filter[since]=0&include=tests

HTTP/1.1

Host: apis.pr-cy.ru
Content-Type: application/vnd.api+json
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.62 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: en-US,en;q=0.6
Accept-Encoding: gzip, deflate, br
Cookie: PHPSESSID=dc356119ff04c7548c3c9e7ace54e4e6
Screenshot_5.jpg



Screenshot_6.jpg


Не могу никак понять что в PM я делаю не так.
 
  • Спасибо
Реакции: devffy

devffy

Client
Регистрация
16.03.2019
Сообщения
541
Благодарностей
188
Баллы
43
:dz:
 

Вложения

nicos77777

Client
Регистрация
04.04.2013
Сообщения
331
Благодарностей
16
Баллы
18

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 764
Благодарностей
2 407
Баллы
113
Сравните с оригинальным в мониторе трафика или fiddler'е.

Вероятно вам вообще нужен POST и тело запроса.
Нужно просто составить тему БАГ, и попросить разработчиков не исправлять заголовки, если их указывает пользователь самостоятельно.
Если букву C заменить на русскую - то заголовок появляется (понятно что сайту это точно не нравится) - но это делает очевидным, что Зеннопостер видит этот заголовок, думает, что здесь ошибка, так как по спецификации в GET не передаются данные, и значит не нужен этот заголовок - и удаляет его.
А нам, пользователям нужно чтобы Зеннопостер выполнял инструкции, которые мы ему даем, без самодеятельности в этом плане.
 
  • Спасибо
Реакции: devffy

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
Нужно просто составить тему БАГ, и попросить разработчиков не исправлять заголовки, если их указывает пользователь самостоятельно.
Если букву C заменить на русскую - то заголовок появляется (понятно что сайту это точно не нравится) - но это делает очевидным, что Зеннопостер видит этот заголовок, думает, что здесь ошибка, так как по спецификации в GET не передаются данные, и значит не нужен этот заголовок - и удаляет его.
А нам, пользователям нужно чтобы Зеннопостер выполнял инструкции, которые мы ему даем, без самодеятельности в этом плане.
в RestSharp такая же фигня. немного вчера поковырял, там тоже удаляет. и у них на сайте написано, что пользователь тупой и не понимает правил безопасности :bk:
в общем если в зенке используют похожие либы, то они тоже заложники этой политики.
 
  • Спасибо
Реакции: Yuriy Zymlex

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113
Попробуйте переключить на альтернативные запросы, иначе используется Chilkat.
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 764
Благодарностей
2 407
Баллы
113
в RestSharp такая же фигня. немного вчера поковырял, там тоже удаляет. и у них на сайте написано, что пользователь тупой и не понимает правил безопасности :bk:
в общем если в зенке используют похожие либы, то они тоже заложники этой политики.
Да, это вполне вероятно.
Я когда решал проблему для себя в RestSharp - пришлось перебирать библиотеку, чтобы подставить правильный юзерагент.
Может и с этой проблемой такой же велосипед.
Просто, может быть где-то в исходном коде есть место, где можно просто закомментировать удаление заголовков - и проблема решена будет для всех за 5 минут :-)
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113
Просто, может быть где-то в исходном коде есть место, где можно просто закомментировать удаление заголовков - и проблема решена будет для всех за 5 минут :-)
Chilkat нельзя подправить + может ломаться обратная совместимость версий.
 
  • Спасибо
Реакции: BAZAg

nicos77777

Client
Регистрация
04.04.2013
Сообщения
331
Благодарностей
16
Баллы
18
Подскажи пожалуйста как нормализовать кодировку, если я отправляю ключ "เครื่องประดับ" то через curl в логе мне вернет "а№Ђаё„аёЈаё·а№€аёаё‡аё›аёЈаё°аё”аё±аёљ"
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)