какие куки / заголовки я должен установить? - PullRequest
0 голосов
/ 23 января 2019

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

Неверный запрос

Почтальон:

enter image description here

Но если я позвоню на страницу входа с действительными учетными данными через почтальона:

enter image description here

а затем вспомните ту же страницу ресурса от того же почтальона, у которого я получил защищенную страницу!:

enter image description here

Я должен получить ту же страницу на веб-сайте.Я пытаюсь реализовать это следующим образом:

            var loginXml = "<Request><MsgType>Authenticate</MsgType><SubMsgType>Login</SubMsgType><UserID>my_login</UserID><passwordNotEncrypted>my_password</passwordNotEncrypted></Request>";
            $.ajax(
                {
                    url: 'https://address/browserservices.aspx/login',
                    type: 'POST',
                    contentType: 'text/xml',
                    datatype: 'text',
                    //xhrFields: {
                    //    withCredentials: true
                    //},
                    //crossDomain: true,
                    data: loginXml,
                    success: function (output, status, xhr) {
                        alert(xhr.getResponseHeader("Set-Cookie"));
                        $.ajax({
                            url: "https://address/RemoteSupport.aspx?id=GUID&pltFrmType=Android&agentversion=13.46",
                            type: 'GET',
                            xhrFields: { withCredentials: true },
                            //crossDomain: true,
                            success: function (x) { },
                            error: function (xhr, textStatus) { alert(xhr.status); }
                        });
                    },
                })

, но я снова получаю Bad Request.Какие заголовки / файлы cookie мне следует передать на страницу, чтобы открыть защищенную страницу, например, в «Почтальоне»?

ДОБАВЛЕНО 28/01/19 Вкладка «Cookie» Почтальона после успешного входа в систему (ошибка входа в систему)имеет одинаковое значение):

enter image description here

и вкладка «Заголовки»:

enter image description here

как я вижу, все заголовки access-control-allow доступны.Что я должен пройти через ajax?

1 Ответ

0 голосов
/ 28 января 2019

На основании предоставленной вами информации существует два вероятных сценария.

Во-первых, файл cookie, который устанавливается внешним сайтом, - HttpOnly.Это достаточно легко проверить в Postman, нажав на вкладку Cookies .

Второй вариант немного сложнее, но внешний сервер должен правильно установить заголовки Access Control,Опять же, есть вкладка Заголовки для просмотра.Дополнительная информация о междоменном ajax и заголовках в этом вопросе: Почему метод jaquery .ajax () не отправляет мой сеансовый cookie?

Наконец, стоит отметить, что ваш браузер автоматически добавит заголовок вуказать, что это ajax-запрос.Вы можете попробовать добавить заголовок X-Requested-With: XMLHttpRequest в Postman и посмотреть, чем он отличается от ваших примеров.Внешний сервер вполне может быть настроен так, чтобы он отвечал на запросы ajax иначе, чем на запросы API браузера или сервера-сервера.

Обновление Ваше обновление Почтальона показывает, что оба эти сценария верны.К сожалению, это означает, что вы не можете достичь желаемого результата с помощью JavaScript.HttpOnly = true означает, что браузер никогда не разрешит скрипту на вашей странице доступ к cookie-файлу.

На этом этапе вам лучше всего написать небольшой прокси-метод на вашем собственном сайте, который заставит сервер запросовсервер, а затем возвращает результат в ваш код JavaScript.Это должно обойти все вышеперечисленные проблемы, хотя вам нужно сделать 2 запроса вместо 1 для данных.

Посмотрите на этот ответ для некоторого кода

Борьба с попытками получить cookieнет ответа с помощью HttpClient в .net 4.5

...