Yertuwernat
@Yertuwernat
Кратко о себе: живу в России, не женат, характер

Где ошибка в базовой авторизации?

Всем привет!

Пытаюсь сделать простейшую базовую авторизацию из мобильного приложения (phonegap) на php-сервере.

На сервере такой код:

<?php

header("Access-Control-Allow-Origin: *");

if(empty($_SERVER['PHP_AUTH_USER']))           
	{	
		header('WWW-Authenticate: Basic realm="WWW-Authenticate"');    
		header ('HTTP/1.0 401 Unauthorized'); 
		exit();                                                
	}

print "1";
?>


На клиенте такой код:

var php_авторизоваться = function()
{	 
	var запрос = new XMLHttpRequest()
    	запрос.open('POST', 'http://localhost:2222/авторизоваться.php')  
    	запрос.send()
    	запрос.onreadystatechange = function()
	        {
	          if(запрос.readyState === 4)
	            {
	            	var ответ = запрос.responseText

	            	if(ответ === '1')
		            	{	
					alert(1)
		            	}
	           }
	       }


php-код без фрагмента if(empty($_SERVER['PHP_AUTH_USER']))... работает нормально, то есть связь с сервером есть и он печатает "1"
Но авторизация не работает.

5addbb7408e4b562759415.png

Прошу дать простейший работающий код - нужно через XMLHttpRequest() обращаться к серверу за данными, вводя пароль и логин
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 3
hOtRush
@hOtRush
Http basic auth не работает если включены CORS со звездочкой, только если CORS настроен для конкретных хостов. Используйте jwt или подобные
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А что значит "не работает"? Не возвращает ответ с кодом 401? В консоли браузера смотрели обмен с сервером?
Ответ написан
Комментировать
villiwalla
@villiwalla
HTML-верстка
Вас не смущает что написано "WWW-Authenticate", а вы пишите авторизация? и следом " Unauthorized"?
Странно, правда если убрать if(empty($_SERVER['PHP_AUTH_USER'])), как вы говорите, то ответ вы получает, а в обратном случае его не получаете? Но мне кажется что в том и в том случает всё работает просто кто-то юзает exit() и не доходит до принта.

Вы работая с заголовками вообще смотрите на них когда проверяете или ожидаете методом вызова принтов и алертов диагностировать? :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы