Установка Content-Type в запросе на выборку не работает

Я делаю запрос удаленной выборки на сервер. Полезная нагрузка находится в формате JSON, поэтому я хочу изменить заголовок Content-Type на application/json. Для этого я использовал следующий код:

let email = document.getElementById("email").value
let password = document.getElementById("password").value

const body = {"email":email, "password":password}
const headers = new Headers({
    "Content-Type": "application/json",
    "Content-Length": JSON.stringify(body).length
})
const options = {
    method: "POST",
    mode: "no-cors",
    headers: headers,
    body: JSON.stringify(body)
}
console.log(options)
const response = await fetch('http://xx.xx.xx.xxx/login', options)
const json = await response.json()
console.log(json)

Однако в консоли инструментов разработчика Chrome заголовок Content-Type запроса по-прежнему text/plain;charset=UTF-8. Что я делаю не так?


person u8y7541    schedule 12.08.2017    source источник
comment
Возможный дубликат Fetch: опубликовать данные json, application/json изменить на текстовый/обычный   -  person CodeZombie    schedule 16.02.2018


Ответы (1)


Переопределение заголовка запроса Content-Type не допускается для запросов no-cors.

Измените режим на cors.

person Quentin    schedule 12.08.2017
comment
Что, конечно, совершенно бесполезно, если у вас есть конечная точка, которая не поддерживает CORS. :-( - person Phil; 02.04.2018
comment
@Квентин, да. Просто означает дополнительные вещи, необходимые для решения проблемы. например, проксировать конечную точку, изменяя заголовки. Или измените конечную точку, чтобы она выполняла CORS. Я решил проксировать конечную точку, а не трогать этот старый устаревший код. :-) - person Phil; 03.04.2018
comment
Вот соответствующий раздел документации по выборке, в котором говорится, что при использовании режима no-cors вы не можете установить значение application/json для заголовка Content-Type. - person Wyck; 26.12.2020