2017-05-09 11 views
2

, 내 생각이 "해야"일을하지만, 그렇지 않습니다 :인증 오류 발생 : (401) (. 어떤 자격 증명이 요청을 찾을 수 없습니다) 나는 HP 셨기 나머지의 API에 대한 권한을 부여 할

function performSignIn(){ 

let headers = new Headers(); 

headers.append('Content-Type', 'application/json'); 
headers.append('Accept', 'application/json'); 
headers.append('Authorization', 'Basic ' + base64.encode(username + ":" + password)); 

fetch(sign_in, {mode: 'no-cors', method:'POST', headers: headers}) 
    .then(response => response.json()) 
    .then(json => console.log(json)) 
    .catch(error => console.log('Authorization failed : ' + error.message)); 
} 

나는 조금 이상한 오류 메시지가 얻을 : (. 자격 증명 요청을 찾을 수 없습니다)

401

이것은 XMLHttpRequest를 함께 할의 HP 문서의 예는 다음과 같습니다 http://alm-help.saas.hpe.com/de/12.53/api_refs/REST/webframe.htm#signin-out_example.htm

어떤 아이디어가 있습니까? 나는 틀린 것을 본다.

감사합니다. 기본적으로

안부, 다니엘

답변

2

fetch(…) 자격 증명을 보내지 않습니다. 당신은 explicitly specify they should be sent해야합니다

또한
fetch(sign_in, {credentials: 'include' , method:'POST', headers: headers}) 
    .then(response => response.json()) 
    .then(json => console.log(json)) 
    .catch(error => console.log('Authorization failed : ' + error.message)); 
} 

, 덧붙여 말하자면, 당신은 확실히 mode: 'no-cors'을 지정하지 않습니다. 그 효과는 브라우저에 알려주는 것입니다. 이 프론트 엔드 JavaScript가이 요청의 응답에 액세스하지 못하도록 차단합니다.

-1

고맙습니다. 하지만 'no-cors'에 대해서는 다음과 같은 오류 메시지가 표시됩니다.

프리 플라이트 요청에 대한 응답으로 액세스 제어 검사를 통과하지 못했습니다. 요청한 리소스에 'Access-Control-Allow-Origin'헤더가 없습니다. 따라서 원점 'http://127.0.0.1:3000'은 액세스 할 수 없습니다. 응답에 HTTP 상태 코드 501이 있습니다. 불투명 한 응답이 사용자의 요구를 충족시키는 경우 CORS가 비활성화 된 상태에서 자원을 페치하려면 요청 모드를 'no-cors'로 설정하십시오.

나는 '노 코르'가 도움이 될 것이라고 생각했지만 실제로는 그렇지 않습니다.

+0

환호 - 답변을 게시하는 대신 다른 질문을 열어야합니다. 그러나 지금 당장 알려 드리 자면 : 501은 서버 측의 장애가 있음을 나타냅니다. 먼저 서버 측 로그를보고 서버 측에서 실패한 사항과 그 이유를 확인하십시오. 하지만 오류 응답의 경우 대부분 또는 대부분의 웹 서버가 Access-Control-Allow-Origin 헤더를 보내지 않고 성공 응답을 위해서만 전송합니다. 따라서 해당 501 응답의 Access-Control-Allow-Origin 응답 헤더가 없어도 서버 CORS 구성 오류가 표시되지 않습니다. 실제 문제는 501 자체입니다. – sideshowbarker