2015-01-16 2 views
0

CORS 시나리오에서 Javascript로부터 내 RESTful API를 호출합니다.AJAX CORS 요청에서 인증 헤더가 한 번만 추가됨

JQuery를 사용하여 POST 인증 요청을 보내고 있습니다. 다른 사람들은 모두 같은 헤더가없는 동안 서버 측에

function post(settings, addAccessToken) { 
     settings.type = 'POST'; 
     settings.cache = false; 
     if (settings.dataType === undefined) 
      settings.dataType = 'json'; 
     if (addAccessToken) { 
      settings.xhrFields = { withCredentials: true }; 
      settings.beforeSend = function (request) { 
       request.setRequestHeader('Authorization', 'Bearer <my access token>'); 
      }; 
      settings.headers = { 
       'Authorization': 'Bearer <my access token>' 
      }; 
     } 
     return $.ajax(settings); 
    } 

, 나는, 첫 번째 전화가 제대로, 상당 '인증'헤더와 함께 오는 것을 볼 수 있습니다 다음은 예입니다.

무엇이 누락 되었습니까?

내가 다른 사람이 같은 상황에 대한 답을 제공 할 수 있도록 내 문제를 해결

답변

2

당신이

cghersi 감사드립니다.

1) 문제는 서버 쪽에서 OPTIONS http 요청을 사용 가능하게하는 것이 었습니다. 사실, 동일한 URL에 대한 첫 번째 호출이 있지만 'OPTIONS'동사를 사용하고 POST | GET 메서드를 사용하여 실제 URL을 두 번째로 호출합니다. 서버가 첫 번째 'OPTIONS'통화에 제대로 응답하지 않으면 (예 : 올바른 허용 된 헤더 등을 지정하면 두 번째 호출이 작동하지 않습니다.

2)

settings.headers = { 
'Authorization': 'Bearer <my access token>' 
}; 

가 작동하지 않는 표기. 머리글을 설정하는 유일한 방법은 다음과 같습니다.

settings.beforeSend = function (request) { 
request.setRequestHeader('Authorization', 'Bearer <my access token>'); 
}; 

희망 사항은 다른 사람들에게 도움이되기를 바랍니다.

cghersi

관련 문제