3

응답 상태가 AngularJS 개이면 401 응답을 반환하려고합니다. 그러나 내가 볼 콘솔에서, 그것은 반환 내가 PHP에서 사용 -1PHP 401 상태가 -1을 반환합니다.

:

$this->output->set_header('HTTP/1.1 401 Unauthorized'); 
$this->output->set_status_header(401, "my status text"); 

enter image description here

이 글은 잘 작동 :

또한
header("HTTP/1.1 401 Unauthorized"); 
http_response_code(401); 

CodeIgniter의에서 상태 코드 : 200, 205, 206 등

enter image description here

어떤 아이디어가 있습니까?

답변

2

XMLHttpRequest에서 교차 원점 요청을하고 있습니다.

간단한 경우 브라우저가 JavaScript에 데이터를 제공하기 전에 서버에서 JavaScript에 대한 사용 권한을 부여해야한다는 의미입니다.

이것은 간단한 사례가 아닙니다. preflight authorisation이 필요한 복잡한 요청을하고 있습니다.

브라우저가 POST 요청을하기 전에 브라우저가 OPTIONS 요청을하여 권한을 요청합니다.

서버가 OPTIONS 요청에 401 응답으로 응답하고 있습니다. 오류 메시지가 명시 적으로이를 알려줍니다 프리 플라이트에 대한

응답이 브라우저는 다음에서 모든 POST 요청을 거부 401

잘못된 HTTP 상태 코드가 있습니다.

결과적으로 POST 요청의 상태는 -1입니다.

200 개의 상태 (적절한 CORS 권한 헤더)로 OPTIONS 요청에 응답해야합니다. 그러면 브라우저가 POST 요청을합니다 (원하는 경우 401을 사용하여 거부 할 수 있음).

+1

(콘솔에 4 줄의 출력이있는 경우 * 마지막 *에만 집중해서는 안됩니다.) – Quentin

+0

와우! 고맙습니다. 네가 옳아. 당신의 링크에서 언급했듯이 :'요청시 사용자 정의 헤더를 설정합니다 (예를 들어, 요청은 X-PINGOTHER와 같은 헤더를 사용합니다)','$ http.defaults.headers.common.Authorization' 헤더를 지울 때, ** 401 ** 응답 코드를 얻으려면. 그래서 내가 뭘 할 수 있니? –

+1

@vahidnajafi - 앞에서 말했듯이 OPTIONS 요청에 항상 OK (적절한 CORS 헤더 사용) 응답하도록 서버 측 코드를 변경하십시오. – Quentin