Я пытаюсь использовать fetch () с кросс-доменом, но получаю необычные ошибки.У меня есть следующий скрипт, размещенный на http://example2.com/index.html
let url = "https://example1.com/login";
fetch(url,
{
"method":"POST",
"content-type":"application/x-www-form-urlencoded",
"mode":"no-cors",
"headers":{
"Authorization":"Basic johnjohn",
"Auth-Secret":"johnsecretpassword",
}
})
.then(response=>response.text())
.then(content=>{
console.log(content); // prints empty line
json = JSON.parse(content);
})
.catch(e=>console.log(`Error occurred: ${e}`));
Когда я запускаю этот скрипт, мой console.log(content)
печатает пустую строку, а мой JSON.parse(content)
выдает ошибку Error occurred: SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data
.
Когда я захожу в консоль разработчика FireFox, нажимаю на сеть, нажимаю на ответ, я вижу следующую полезную нагрузку:
Изменение response.text()
на response.json()
вызывает блок catch
с той же ошибкой синтаксического анализа JSON.
Кроме того, мой https://example1.com/login
- это php-файл со следующим содержимым:
<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Authorization, Auth-Secret, Content-Type');
die(json_encode(array("data"=>"authorization","status"=>"fail")));
Что яделать неправильно?