#javascript #html #cors #es6-modules
#javascript #HTML #cors #es6-модули
Вопрос:
У меня есть небольшой HTML-файл, который вызывает файл javascript, но когда я пытаюсь получить к нему доступ в браузере, я получаю следующую ошибку:
Доступ к скрипту в ‘file:///C:/Users/jekob/Desktop/battleship/index.js ‘ from origin ‘null’ заблокирован политикой CORS: запросы с перекрестным источником поддерживаются только для схем протоколов: http, data, chrome-extension, edge, https, chrome-ненадежный.
Я часами гуглил это и обнаружил, что могу разместить свое приложение на сервере (например node.js ) а затем разрешить CORS. Однако мне не нужен какой-либо сервер. Я хочу просто простой HTML и js-файл.
index.html:
<!DOCTYPE html>
<html>
<head>
<title>battle-ship</title>
<link rel="stylesheet" type="text/css" href="index.css">
</head>
<body>
<div id="board"></div>
<script type="module" src="index.js"></script>
</body>
</html>
index.js:
import {board} from './board_0.1.js';
console.log(board);
board.js:
class cell{
constructor(){
this.locationByLetter = null;
this.locationByNumb = [];
this.occupied = false;
this.clicked = false;
}
}
class shipDitel{
constructor(name,size){
this.name = name;
this.size = size;
this.location =[];
}
}
export const board = buildBoard();
const shipType = [["Destroyer",2/*size*/],["Submarine",3],["Cruiser",3,],
["Battleship",4,],["AircraftCarrier",5]];
var shipsArr=setShip();
var selectedShip = selectShip(shipsArr[4]);
var stateGame ={
setting:true,
gameIsStart:false
}
function buildBoard(){
..
};
function setShip(){ //setting to a ship his name and size .
...
};
function selectShip(ship){
...
}
function onSelectedCell(cell){
...
};
function checkTheZone(cell){
...
};
Комментарии:
1. Возможно, удастся запустить экземпляр Chrome (только для этой веб-страницы) с опцией командной строки только для этой проблемы
--disable-web-security
и обойти защиту CORs. Но вы НИКОГДА не должны регулярно просматривать Интернет с этим параметром, поскольку это открывает большие дыры в безопасности и уязвимости.2. для модулей требуется сервер. для небольших тестов и возни с ними мне легко просто запустить HTTP-сервер python из рассматриваемого каталога; например
python -m http.server
Ответ №1:
Я часами гуглил это и обнаружил, что могу разместить свое приложение на сервере (например node.js )
ДА
а затем разрешить CORS.
Поскольку он будет того же происхождения, вам не понадобится CORS.
Однако мне не нужен какой-либо сервер. Я хочу просто простой HTML и js-файл.
Тогда вы не сможете использовать модули ES6 на стороне браузера.
Вам нужно будет либо написать код, чтобы не использовать модули в первую очередь, либо использовать что-то вроде Webpack или Rollup для преобразования кода, чтобы впоследствии не использовать модули.
В HTML issue tracker есть обсуждение мотивации требования CORS.