Node, Express 및 MySQL을 사용하여 로컬로 내 웹 사이트를 개발하려고합니다. 이렇게하면 로컬 MySQL 서버를 설치했습니다. 내 로컬 노드 svrApp.js 웹 서버를 실행 한 다음 localhost : 3000 (Chrome 버전 62.0.3202.94 (공식 빌드) (64 비트) 사용)에 연결하면 CORS (크로스 원본 공유) 오류가 발생합니다.CORS 오류가 발생하는 순수 로컬 개발 환경
나는 CORS에 대한 많은 연구를 해왔으며, 그것이 무엇인지, 왜 그런지 등을 얻습니다.하지만 아직도 이해할 수없는 것은 내가하는 모든 것이 로컬 일 때 그것을 사용해야 할 이유입니다. . 그게 모두 똑같은 도메인이어야합니다, 그렇죠? 같은 localhost, 같은 포트. 내 생산 버전의 코드와 동일한 버전의 코드는 CORS를 전혀 처리하지 않아도 잘 작동합니다. 그래서, 내가 크로스 도메인을 사용하고 있다고 들었을 때 로컬에서 무슨 일이 일어나고있는 것입니까? 나는이 일을 할 필요가 있다고 확신하지 않지만이 문제가 CORS 오류를 일으키는 원인을 찾지 못하는 것 같습니다.
여기 CORS를 사용해야한다면 괜찮습니다. 그렇다면 내 모든 연구에 대해 내가 가지고있는 것조차도 작동시킬 수 없기 때문에 여전히 근본적인 것이 빠져 있습니다. 녹이다.
아래 코드는 서버 쪽에서 생성 된 선택 쿼리의 결과가있는 테이블을 렌더링하기 위해 서버에 대한 SQL 요청을 만드는 클라이언트 측 코드입니다. 다시 말하지만 모든 것이 로컬로 호스팅됩니다. 페이지, SQL 서버, 모든 것.
var ip = "localhost:3000/";
function afterPageLoad(){
var req = new XMLHttpRequest();
var data = {};
req.open("GET", ip+"EAselect", true);
req.withCredentials = true;
req.setRequestHeader("Content-Type", "application/json");
req.addEventListener("load", function(dataResponse, status){
if(req.status >= 200 && req.status < 400){
dataResponse = JSON.parse(req.responseText);
buildTable(dataResponse);
}else{
console.log("Error: " + req.status + ", " + req.statusText);
}
});
req.send(JSON.stringify(data));
}
다음은 서버의 경로 처리기입니다. CORS 액세스를 허용하는 응답 헤더를 추가했지만 기쁨은 없습니다.
/* Select Query*/
app.get("/EAselect", function(req,res,next){
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With,
Content-Type, Accept");
pool.query("SELECT * FROM workouts", function(err, rows, fields){
if(err){
console.log("query failure. " + err.description);
next(err);
return;
}else{
res.send(JSON.stringify(rows));
}
});
});
단순히 모든 지역이기 때문에 서버 나 클라이언트에 CORS 구현하지 않고 내 로컬 리소스에 연결할 수 있기를 기대합니다.
내가지고있어 결과는 : 나는 CORS 로컬 호스팅 서비스와 관련된 뭔가를 광범위하게 여기 검색하지만, 특히이 문제를 해결 아무것도 발견되지 않은
Failed to load localhost:3000/EAselect: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
.
관련 정보를 추가하기 위해 내가 생각할 수있는 모든 것입니다. 도움이 필요한 사항을 놓친 경우 알려 주시면 기꺼이 수정하겠습니다. 도움이나 설명에 감사드립니다.
나의 사과를 늦게 다시 이것에 얻기를 위해. 나는 일주일 동안 일했다. 이것에 대한 여분의 눈 세트를 가져 주셔서 감사합니다, hannes! 그 수정은 내가 그것을 얻는 것을 허락했던 잘못을 바꿨다! 고맙습니다! –