Сообщение от voraa
|
Я думаю не получится считать файл, если страница берется с локального компьютера используя XMLHttpRequest или fetch.
|
Это я опять жутко поторопился.
На самом деле МОЖНО!
Все дело в заголовках, которые посылает сервер
Вот такой простецкий сервер на nodejs
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.setHeader('Access-Control-Allow-Origin', '*'); // !important
res.setHeader('Access-Control-Allow-Headers', 'origin, content-type, accept'); // !important
res.end('Hello World with CORS!');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
И вот такой html файл, расположенный локально
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" lang="ru">
<meta name="viewport" content="width=device-width, initial-scale=1.0" >
<title>TESTE</title>
</head>
<body id="body">
<button type='button' id='bsend'>Send</button>
<br>
<div id='answ'>
</div>
</div>
<script>
document.getElementById('bsend').addEventListener('click',
async () => {
try {
const resp = await fetch('http://127.0.0.1:3000', {mode:'cors'})
let str = await resp.text();
document.getElementById('answ').innerHTML = str
console.log(str)
}catch (err){
document.getElementById('answ').innerHTML=`Error ${err.name} ${err.code} ${err.message}`;
}
}
);
</script>
</body>
</html>
Совершенно спокойно взаимодействуют.