У меня есть приложение html / js, которое подключается к нашему API-серверу. При развертывании внутри Android-приложения я пытаюсь использовать fetch для его вызова:
function REQUEST(url, query, post, method) {
console.log('REQUEST', method, url, query, post);
url = queryString(HOST_URL + url, query);
var headers = new Headers()
headers.append('user-agent', 'Sales/1')
headers.append('content-type', 'application/json')
let company = getCompany();
if (company) {
headers.append('company', company)
}
var bodyData = null;
if (method == 'POST') {
bodyData = JSON.stringify(post);
}
return fetch(url, {
body: bodyData,
credentials: 'include', // include, same-origin, *omit
headers: headers,
method: method, // *GET, POST, PUT, DELETE, etc.
mode: 'cors', // no-cors, cors, *same-origin
}).then(function (response) {
console.log('RES', response)
if (!response.ok) {
return response.text().then(res => {
var err = Error(url + ":_" + response.statusText);
try {
const data = JSON.parse(res);
if (data.hasOwnProperty("message")) {
err = Error(data.kind + ": " + data.message);
};
} catch(ex) {
console.log('FAIL json err', ex);
err = Error(url + ":_" + response.statusText + "\n" + res);
}
throw err;
});
}
return response.json();
})
};
С сервера я получаю:
Источник не может сделать этот запрос
Это потому что андроид отправляет:
content-type: application/json
Origin: file://
Sec-Fetch-Mode: cors