Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124

XMLHttpRequest.setRequestHeader

29.11.2018, 18:09. Показов 2499. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выполняю код в мозилле
JavaScript
1
2
3
4
x = new XMLHttpRequest();
x.open('POST','https://lkp-vko.dmed.kz/Auth/SignIn',false);
x.setRequestHeader('Content-Type','application/json; charset=utf-8');
x.send('{"username":"username","password":"password"}');
В итоге браузер формирует такой запрос
Code
1
2
3
4
5
6
7
8
9
10
11
OPTIONS /Auth/SignIn HTTP/1.1
Host: lkp-vko.dmed.kz
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Origin: null
DNT: 1
Connection: keep-alive
И вываливается network error

Если убрать setRequestHeader то формируется нормальный пост запрос с content-type: text/plain. Но мне нужен application/json. Как исправить?

P.S.
IE11 вообще шлёт CONNECT вместо POST.

Добавлено через 19 минут
Нашёл
В кросс-доменном XMLHttpRequest можно указать не только GET/POST, но и любой другой метод, например PUT, DELETE.

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

Чтобы пресечь любые недопонимания, браузер использует предзапрос в случаях, когда:
  1. Если метод – не GET / POST / HEAD.
  2. Если заголовок Content-Type имеет значение отличное от application/x-www-form-urlencoded, multipart/form-data или text/plain, например application/xml.
  3. Если устанавливаются другие HTTP-заголовки, кроме Accept, Accept-Language, Content-Language.

…Любое из условий выше ведёт к тому, что браузер сделает два HTTP-запроса. Первый запрос называется «предзапрос» (английский термин «preflight»). Браузер делает его целиком по своей инициативе, из JavaScript мы о нём ничего не знаем, хотя можем увидеть в инструментах разработчика. Этот запрос использует метод OPTIONS. Он не содержит тела и содержит название желаемого метода в заголовке Access-Control-Request-Method, а если добавлены особые заголовки, то и их тоже – в Access-Control-Request-Headers. Его задача – спросить сервер, разрешает ли он использовать выбранный метод и заголовки. На этот запрос сервер должен ответить статусом 200, без тела ответа, указав заголовки Access-Control-Allow-Method: метод и, при необходимости, Access-Control-Allow-Headers: разрешённые заголовки.
Короче так делать нельзя
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.11.2018, 18:09
Ответы с готовыми решениями:

Промисифицировать XMLHttpRequest
Есть задача:нужно промисифицировать XMLHttpRequest. Есть два решения,оба рабочие: function promisifyXMLHttpRequest(url, method,...

XMLHttpRequest запрос
Ситуация следующая. Есть сервер VPS, на котором стоит приложение Node.js. К нему необходимо сделать запрос от "клиента"...

Перезапуск XMLHTTPRequest запроса
Есть кусочек скрипта, который делает XMLHTTPRequest запрос. Время от времени, сервер, обрабатывающий запрос "подвисает". И тогда...

2
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
30.11.2018, 08:15
Цитата Сообщение от murderer Посмотреть сообщение
Короче так делать нельзя
Что делать нельзя?
Научите ваш сервер отвечать на OPTIONS запрос. Браузер, чтобы не гонять данные туда-сюда, сначала спрашивает сервер: "А можно я кое-что спрошу вот таким образом?", сервер отвечает: "Да ОК" или "Нет, что за ересь" и в зависимости от этого браузер решает отправлять запрос или нет.
0
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
02.12.2018, 13:29  [ТС]
Дык сервер, то не мой Написал на php.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.12.2018, 13:29
Помогаю со студенческими работами здесь

XMLHttpRequest ждет ответ
Подскажите пожалуйста по такому вопросу. Делаю XMLHttpRequest запрос. Код примерно такой: //Делаем запрос к нейросети var...

Сделать XMLHttpRequest запрос на http
Всем привет. Ситуация такая: Есть один сайт А с которого делает XMLHttpRequest запрос на сайт В у которого есть только http, а https нет....

Использование XMLHttpRequest, замена php
Используя php, мне не нравиться что его нужно выписывать в html разметку для вывода контента пользователю, я подумал, может использовать...

XMLHttpRequest. как обойти ошибку?
Привет! Подскажите как обойти ошибку. xhr.open('GET', 'https://up.htmlacademy.ru/assets/javascript/demo/8-xhr/data.json'); ...

Как правильно передать данные и обработать (XMLHttpRequest)
Привет, ребят! Такой вопрос возник я передаю с сервера (php) несколько данных и в js не понимаю как их обработать Вот пример. Я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru