2016-10-11 2 views
1

내 API에 POST 요청을하려고합니다. 핸들러는 현재API에서 POST 데이터 가져 오기 (노드 js, 반응)

fetch('http://localhost:8080/login', { 
     method: 'post', 
     headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json' 
     }, 
     body: JSON.stringify({ 
     username: this.state.username, 
     password: this.state.password 
     }) 
    }); 

내가 전달하고하면에 대한 무관 ...

app.post('/login', function(req, res, next) { 
    console.log("here"); 
    ... 
}); 

이 API는 로컬 호스트 8080에서 호스팅 그리고 내가 그렇게으로 데이터를 가져 오는하고 ... 다음과 같습니다 순간, 나는 단지 성공적인 POST 요청을하고 싶다. 내가 양식을 제출하면, 그것은 API를 가져,이 뭔가 일을 것처럼 보인다 내가 콘솔에 도착 메시지 ...

OPTIONS /login 200 8.177 ms - 4 

이지만은 console.log("here"); 호출 결코 극복하지 않았다.

저는 API를 제대로 호출하지 않을 것이라고 생각합니다. 헤더를 제거하면 POST 호출이 이루어 지지만 데이터를 response으로 전달하는 것이 중요하기 때문에이 헤더가 필요하다고 생각합니다. 어떻게해야합니까?

답변

1

CORS 권한 문제가 발생할 가능성이 있습니다. 이것은 실행중인 노드 서버의 URL과 다른 호스트 (로컬 파일 시스템과 같은)에서 웹 응용 프로그램을 제공 할 때 항상 발생합니다. 브라우저는 프로토콜, 하위 도메인, 도메인 및 포트와 정확히 일치하지 않는 URL에 대한 모든 아약스 액세스를 제한합니다.

host the static HTML/JS/CSS from the node server 수 있으며 문제가 해결 될 수 있습니다. 또는 노드 서버에 CORS 권한을 추가 할 수 있습니다. 당신은 MDN 또는 enable-cors.org

+0

이에 CORS 액세스 제한에 대한 더 많은 읽을 수

app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); 

: 노드에 /login 경로는 다음과 같은 것을 추가하기 전에

기본적으로, 당신이 표현을 사용하는 가정 알아두면 유용하지만, 온라인으로 검색 할 수있는 모든 유사 콘텐츠를 시도했지만 여전히 동일한 문제가 발생합니다. 그러나 헤더를 제거하면 작동합니다. – Bolboa

관련 문제