사용자가 액세스 할 수있는 여러 인터페이스가있는 RestFul 웹 서비스를 보호했습니다. 사용자는 적절한 승인 및 인증 즉 https를 통해 이러한 인터페이스에 액세스 할 수 있습니다. FireFox 용 RestFul Client를 다운로드 받았는데, 여기에서 사용자 정의 헤더를 설정하고 본문에 로그인 자격 증명을 제공하고 있습니다. 웹 서비스에 로그인 할 수 있으며 다른 인터페이스에 액세스 할 수 있습니다.RestFul 웹 서비스가 HTTP/1.1 400 Bad Request를 반환합니다.
하지만 jQuery, Ajax를 사용하여이 서비스를 호출하려고했지만 "HTTP/1.1 400 Bad Request"응답을 받았습니다. 다음은 내가 속성을 "헤더"를 사용하여 사용자 정의 헤더를 제공하기 위해 노력 코드
먼저
<script type="text/javascript">
var xhr,jqXHR;
if(!xhr && typeof XMLHttpRequest != "undefined")
{
xhr = new XMLHttpRequest();
}
self.ajax = function(uri, method, data) {
var request = {
url: "https://mysite/login",
type: "Post",
// Content-Type: "application/json",
//headers: { 'My-Key': 'ACNDSDSKER$%$%$#$#$#$#$"' },
accepts: "application/json",
data: { // the parameters of the request. This should be adapted to your case
"uid": username,
"password": password
},
cache: false,
dataType: 'json',
data: JSON.stringify(data),
beforeSend: function (xhr) {
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));
xhr.setRequestHeader("My-Key", btoa("ACNDSDSKER$%$%$#$#$#$#$"));
},
success:function (jqXHR) {
alert("ajax success " + jqXHR.status);
},
error: function(jqXHR) {
console.log("ajax error " + jqXHR.status);
}
};
return $.ajax(request);
에게이지만 같은 오류를 제공합니다. 둘째, beforeSend 함수로 시도했지만 결과는 같습니다. 세 번째로 기본 HTTP 프로토콜을 사용하여 로그인 자격 증명을 인코딩하려했지만 사용하지 않았습니다. 동일한 오류가 발생합니다.
참고 : - Rest Client에서는 사용자 지정 헤더로 "인증"을 제공 할 필요가 없습니다. 또한 사용하는 프로토콜은 "HTTP 인증 - OAuth 프로토콜"입니다.
Rest Client에서 작성한 동일한 요청이 잘 작동하지만 jQuery, Ajax로 작성된 코드가 아닌 이유를 알려주십시오.
모든 내용이 스크립트 태그에 있습니다. – user2849371