2016-10-27 2 views
1

Я пытаюсь войти в мое приложение Rocket.chat на localhost через API.
Когда я отправляю POST на http://localhost:3000/api/login с данными: {"user":"myusername","password":"mypassword"}
Я получаю ответ 401 со статусной ошибкой, независимо от того, используется ли xhr request, axios или jquery ajax.

НО, когда я отправляю одни и те же данные с помощью виртуального виртуального винта или зависания, ответ равен 200 и статус.
Что я делаю неправильно? Почему POST не работает при отправке с помощью javascript и передает при отправке с помощью python или curl?Rocket.chat - логин через Rest API - 401

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"} 

Я посылаю запрос входа в систему без заголовка, потому что:

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

возвращает 500

Здесь находятся сведения о запросе из Chrome:
enter image description here

ответ

4

Вы используете ракетный чат в домене, который отличается от домена, из которого вы делаете запрос ajax. Домен и порт, из которого вы делаете запрос ajax, должны быть такими же, как домен и порт целевого URL. Это связано с функцией безопасности в веб-браузерах, называемой Cross Origin Resource Sharing (CORS). См. 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 –

Смежные вопросы