JavaScript로 웹 서버 클라이언트를 만들어야하는데 요청 헤더를 정의하는 데 몇 가지 문제가 있습니다.
POST 메서드와 Content-Type : "application / json"이 필요합니다.
나는 이것을 시도했다 :
$.ajax({
url: 'http://MyWebServiceAddress',
data: JSON.stringify({user:'user',pass:'pass'}),
type: 'POST',
crossDomain: true,
dataType: 'json',
success: function () {
alert("success")
},
error: function (xhr, ajaxOptions, thrownError) {
alert("Error: " + xhr.status + "\n" +
"Message: " + xhr.statusText + "\n" +
"Response: " + xhr.responseText + "\n" + thrownError);
}
});
하지만 다음과 같이 contentType을 넣으면 :
contentType : 'application / json; charset = utf-8 ',
Chrome Dev Tools로 요청을 보면 메소드가 "OPTIONS"로 변경된 것을 볼 수 있으며 "text / plain"을 입력합니다.
누구든지 나를 도울 수 있습니까? 나는 Ajax를 사용할 필요가 없기 때문에 누군가가 클라이언트를 더 쉽게 만들기 위해 좋은 JavaScript 라이브러리를 알고 있다면 아마도 내 문제를 일으킬 수 있습니다.
contentType
작성한대로 헤더 를 설정해야합니다 . 이는 contentType
요청 자체를위한 것이고 dataType
헤더는 서버에서 기대하는 응답을위한 것입니다. 당신이 추가한다면 contentType
받는 $.ajax
요청, 그것은 올바른 보인다.
"OPTIONS"요청은 다른 문제입니다. "cross-origin"요청을해야하기 때문에 전송되고 있습니다. 즉, ajax 요청의 서비스 주소 ( http://MyWebServiceAddress
)가 현재 페이지의 "원본"주소와 다릅니다. 그럴까요? 예를 들어 페이지의 출처가 http://example.com
이고 http://twitter.com
해당 페이지에서를 요청하는 경우 입니다. 여기 에서 교차 출처 또는 CORS 요청에 대해 자세히 알아볼 수 있습니다 . 결론은 $.ajax
JSON 데이터를 게시하기 전에 별도의 ORIGIN 요청을해야한다는 것입니다. 그러면 서버 가 페이지 도메인의 CORS 요청을 허용하도록 구성된 경우에만 POST 요청을 수행 http://MyWebServiceAddress
합니다. 자세한 내용은 위의 CORS 링크를 참조하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다