У меня есть приложение QML, которое должно взаимодействовать с сервером через RESTful API. Я использую веб-интерфейс javascript s XMLHttpRequest()
. Код выглядит следующим образом:
function deleteTask(taskId) {
const suffix = "/deleteTask"
let response
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
response = JSON.parse(xhr.responseText.toString())
console.log("Delete task response recieved.")
console.log("XHR Status: ", xhr.status)
console.log("Response:")
console.log(JSON.stringify(response, null, 2))
if (xhr.status === 200) {
// Success
console.log("Delete task request fulfilled.")
} else {
console.log("deleteTask: Undefined behaviour happened.")
}
}
}
xhr.open("DELETE", url + suffix + "/" + taskId, true)
xhr.setRequestHeader("Content-type", "application/json")
xhr.setRequestHeader("Authorization", accessToken)
xhr.send()
console.log("Delete task request sent.")
}
url
- это URL-адрес сервера, а accessToken
- токен доступа, предоставленный сервером. Эта функция полностью соответствует спецификации API отправляемого мной запроса, но сервер отвечает, как если бы заголовок Authorization
не был установлен.
Вот где начинается чрезвычайно ошибочное поведение c: если я конвертирую эту функцию в команду curl
в своей оболочке, она работает отлично (об этом свидетельствует ответ сервера). Команда curl
и эта функция javascript имеют одинаковое значение (точно такой же запрос), но одна работает, а другая - нет.
Вот команда curl
: curl -X DELETE "http://localhost:8080/api/1.0/deleteTask/93a34091-e913-4929-b445-c3db58b42ae9" -H "accept: application/json" -H "Content-type: application/json" -H "Authorization: *access token goes here*"