POST превращается в GET

Kizarek86

Green Team
20.07.2007
875
8
BIT
106
Доброго времени суток, Лотусяне.

Возникла такая проблема. Имеем запрос

JavaScript:
  $.ajax({
    type:"POST",
    dataType: "script",
    contentType:"application/javascript",
    url: "http://server1.loc.ru/db.nsf/TEST_AGENT?OpenAgent",
    data: {id: "123456789"}
  });

При выполнении его на странице в базе " " все отлично.
Если выполняем его на странице в базе " " запрос становиться GET

Подскажите плз куда копать. Это криво построенные запрос или какие то настройки политики безопасности на серверерах?
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
346


method (default: 'GET')
Type:
The HTTP method to use for the request (e.g. "POST", "GET", "PUT"). (version added: )
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
514
А не из-за этого ли?
Web Site Settings
1634217966614.png
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
106

savl

Lotus Team
28.10.2011
2 624
314
BIT
514
Вполне может быть. Только эта штука вообще не настроена, берем дефолт из серверного файла.
Это как я понял расширенная настройка http сервера. Будем посмотреть.
В notes.ini может еще быть настройка: HTTPEnableMethods=GET,POST,PUT,DELETE,HEAD
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
106
В notes.ini может еще быть настройка: HTTPEnableMethods=GET,POST,PUT,DELETE,HEAD
Такой настройки нет в ini. обрати внимание что изменение типа запросов просиходит только если агент с другого сервера, на текущем всем прекрасно.

Версия сервера 9. Была бы 10ка надо было бы копать в сторону CORS, в 9й её нету походу. А вот есть ли обходные пути вопрос)
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
514
Такой настройки нет в ini. обрати внимание что изменение типа запросов просиходит только если агент с другого сервера, на текущем всем прекрасно.

Версия сервера 9. Была бы 10ка надо было бы копать в сторону CORS, в 9й её нету походу. А вот есть ли обходные пути вопрос)
CORS значит...



Ну и web site rule + notes.ini ( HTTPAdditionalRespHeader )

Web site rules are created via an action button with the Internet Site document.

The rule details you need are:

DescriptionAnything
Type of ruleHTTP Response headers
Incoming URL pattern*
HTTP Response codes200, 206
Expires HeadersAdd header only if application did not
Custom HeadersName: Access-Control-Allow-Origin Value: * Override
Name: Access-Control-Allow-Headers Value: Origin, X-Requested-With, Content-Type, Accept Override

1634222799952.png


1634223512332.png
 
  • Нравится
Реакции: Kizarek86

garrick

Lotus Team
26.10.2009
1 367
152
BIT
346
Есть же у функции ajax() параметр method, который по умолчанию GET. У вас он не задан вообще. Укажите в явном виде и будет вам счастье. И загадка тут не в том, что POST превращается в GET, а почему он у вас без указания типа в первом случае POST. Второй сервер работает как ожидается, а в первом наверное какие-то настройки протоколов накручены. Вы уверены, у вас в обоих случаях версия jQuery одинаковая? Откуда вы её берёте?
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
106
Есть же у функции ajax() параметр method, который по умолчанию GET. У вас он не задан вообще. Укажите в явном виде и будет вам счастье. И загадка тут не в том, что POST превращается в GET, а почему он у вас без указания типа в первом случае POST. Второй сервер работает как ожидается, а в первом наверное какие-то настройки протоколов накручены. Вы уверены, у вас в обоих случаях версия jQuery одинаковая? Откуда вы её берёте?
Код:
 type:"POST" = method:"POST"
Версия jQuery естесвенно одна и таже и берется из одного места.

В целом куда копать уже объяснили. Спасибо.
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
106
CORS значит...



Ну и web site rule + notes.ini ( HTTPAdditionalRespHeader )

Web site rules are created via an action button with the Internet Site document.

The rule details you need are:

DescriptionAnything
Type of ruleHTTP Response headers
Incoming URL pattern*
HTTP Response codes200, 206
Expires HeadersAdd header only if application did not
Custom HeadersName: Access-Control-Allow-Origin Value: * Override
Name: Access-Control-Allow-Headers Value: Origin, X-Requested-With, Content-Type, Accept Override

Посмотреть вложение 54202

Посмотреть вложение 54203
Работает. Спасибо.
Осталось только куки прикрутить, чтобы авторизация взлетела.
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
106
Ну в общем пока решение такое.

В Web Site Rule добавлены параметры:
Access-Control-Allow-Origin:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken

На страницу где выполняем кросдоменные запросы добавлено малец js
JavaScript:
$.ajaxPrefilter(function(options, originalOptions){
        if (originalOptions.type == "POST" && options.crossDomain  && options.URL != undefined) {
            options.withCredentials = true;
            options.xhrFields = { withCredentials: true };
            options.type = "POST";
            return "html";
        }
});
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!