Как определить, что ответ является предполётным и что с ним делать? - PullRequest
0 голосов
/ 24 января 2019

Мне удалось получить ответ на мой пост.Это явно ответ на предполетный запрос.Вот ответ:

HTTP/1.1 200 OK
Date: Thu, 24 Jan 2019 00:19:54 GMT
Server: Apache
X-Powered-By: PHP/5.6.36
Set-Cookie: cisession=ok8ilu3sqp51i2s6tkkuoh6aa9r9oeu6; expires=Thu, 24-Jan-
2019 08:19:55 GMT; Max-Age=28800; path=/; HttpOnly
X-Frame-Options: SAMEORIGIN
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Accept,Authorization,Content-Type,Origin
Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE
Access-Control-Max-Age: 86400
Content-Length: 0
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

Мой код браузера получает 200, а затем задыхается, потому что ожидает, что responseText будет буфером json.Но это не так.Он получает пустой ответ на предварительный запрос в событии «onload».Я пытался дождаться onloadend, но получить тот же пустой текст ответа.Так что мне здесь делать?Просто игнорировать первый статус = 200 и ждать реального?Первые 200 взяты из предпечатной реакции и для меня бесполезны.Есть ли какое-то поле в ответе перед полетом, которое говорит мне, что это была просто информационная передача?

1 Ответ

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

Если это ответ на запрос POST, то он не будет ответом на запрос предварительной проверки.

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

Обратите внимание, что если вы делаете запрос, который требует предварительной проверки, то в оба заголовка Access-Control-* должны быть установлены оба ответа на предварительную проверку и ответ на фактический запрос.

Если вы сделали запрос POST и получили его обратно, то вы только что сделали запрос, на который сервер ответил HTML-документом нулевой длины (и, следовательно, недействительным).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...