2016-10-27 3 views
1

API를 통해 localhost에서 내 Rocket.chat 앱에 로그인하려고합니다.
데이터가있는 http://localhost:3000/api/login에 POST를 보낼 때 : {"user":"myusername","password":"mypassword"}
xhr 요청, axios 또는 jquery ajax와 상관없이 상태 오류가있는 응답 401이 표시됩니다.

그러나 파이썬 virtualenv 또는 curl을 사용하여 동일한 데이터를 보낼 때 응답은 200이고 상태는 성공합니다.
내가 뭘 잘못하고 있니? 자바 스크립트로 보낼 때 POST가 실패하고 파이썬이나 컬로 보낼 때 패스하는 이유는 무엇입니까?Rocket.chat - 나머지 API - 401을 통해 로그인

xhr.setRequestHeader('Content-Type', 'application/json'); 

크롬에서 500 개

여기 있습니다 요청 사항 반환 : 때문에

var xhr = new XMLHttpRequest(); 
    xhr.open("POST", 'http://localhost:3000/api/login/', true); 
    xhr.send(JSON.stringify({ 
    user: "myusername", 
    password: "mypassword" 
})); 
// result: {status: "error", message: "Unauthorized"} 

나는, 헤더와 로그인 요청을 보내고있다
enter image description here

답변

4

ajax 요청을 작성한 도메인과 다른 도메인에서 로켓 채팅을 실행 중입니다. ajax 요청을 보내는 도메인과 포트는 도착 URL의 도메인과 포트와 동일해야합니다. 이는 CORS (Cross Origin Resource Sharing)라고하는 웹 브라우저의 보안 기능 때문입니다. https://en.wikipedia.org/wiki/Cross-origin_resource_sharing을 참조하십시오.

이 오류를 수정하려면 웹 서버가 다른 도메인의 요청을 허용해야합니다.

+0

입니다. 결과는 401 - [링크] (http://postimg.org/image/nr29ddcm5/)입니다. –

+0

내 코드에 또 다른 문제가 있었지만 답변이 100 % 맞습니다. 감사합니다! 이제는 내 Rocket.chat 서버가 내가 모르는 언어로 다른 도메인의 요청을 허용하도록해야합니다. :) –

-1

이 코드 시도를

var xmlhttp = new XMLHttpRequest(); // new HttpRequest instance 
xmlhttp.open("POST","http://localhost:3000/api/login/"); 
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF- 8");xmlhttp.send(JSON.stringify({name:"myusername", time:"mypassword"})); 
+0

코드를 사용하여 응답을 얻습니다. XMLHttpRequest는 http : // localhost : 3000/api/login /을로드 할 수 없습니다. 동일한 도메인에서 게시하는 경우에도 프리 플라이트에 대한 응답이 유효하지 않은 HTTP 상태 코드 500 –