jQuery CORS 콘텐츠 유형 옵션
커스텀 콘텐츠 타입의 jQuery CORS를 사용하여 AJAX 바디 리퀘스트를 보내는 데 문제가 있습니다.제 코드는 다음과 같습니다.
$.ajax({
url: "http://some-other-domain/my-path",
type: "POST",
contentType: "application/json",
dataType: "json",
data: JSON.stringify({
key: 1,
key2: 2
}),
statusCode: {
200: function(data) {
}
},
xhrFields: {
withCredentials: true
},
crossDomain: true
});
컨텐츠 타입은 서버측에서 필요하기 때문에 「어플리케이션/json」으로 설정할 필요가 있습니다.그러나 POST jQuery가 요청을 보내는 대신 OPTIONS로 요청을 보냅니다.
머리글은 다음과 같습니다.
응답 헤더:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 03:00:00 EET
Set-Cookie: JSESSIONID=BB9D6783E58FB0F2ADE1924A2F0CBA52; Path=/
Content-Type: text/html;charset=UTF-8
Content-Length: 6233
Date: Fri, 07 Sep 2012 14:41:13 GMT
요청 헤더:
OPTIONS /my-path HTTP/1.1
Host: MY-HOME-NAME
User-Agent: MY_USER_AGEMT
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Origin: HERE-GOES-DOMAIN
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Pragma: no-cache
Cache-Control: no-cache
CORS는 정상적으로 동작합니다.필요한 헤더는 모두 서버에서 송신되지만 OPTIONS 타입으로 송신되는 경우는 송신되지 않습니다.jQuery 문제인가요?
jQuery - 1.8.1
이 OPTIONS 요청은 CORS 비행 전 요청입니다.이는 요청을 수행할 권한을 요청하기 위해 실제 요청 전에 서버로 전송되는 요청입니다.커스텀 Content-Type이 실제로 프리플라이를 트리거하고 있습니다.CORS 사양(http://www.w3.org/TR/cors/),에 따르면 application/x-www-form-urlencoded, multipart/form-data 또는 text/multipart 이외의 Content-Type은 프리플라이를 트리거합니다.
리모트 서버를 제어할 수 없는 경우는, CORS 프리플라이트 지원을 의뢰하거나, JSON-P등의 다른 옵션을 시험해 볼 필요가 있습니다.
원격 서버를 제어할 수 있는 경우 사전 이동을 처리하도록 변경할 수 있습니다.프리플라이트 요구를 처리하려면 OPTIONS 요구에 대한 응답으로 다음 헤더를 전송해야 합니다.
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST
Access-Control-Allow-Headers: Content-Type
응답은 HTTP 200이어야 합니다.그Access-Control-Allow-Methods
응답 헤더는, 다음의 값을 에코할 수 있습니다.Access-Control-Request-Method
또는 그냥 이렇게 할 수도 있고GET, POST, PUT, DELETE
모든 방법을 지원합니다.그Access-Control-Allow-Headers
응답 헤더는 의 값을 에코해야 합니다.Access-Control-Request-Headers
request.
브라우저는 이러한 헤더를 수신하면 실제 요청을 합니다.CORS 비행 전 요청에 대한 자세한 내용은 여기를 참조하십시오.
http://www.html5rocks.com/en/tutorials/cors/
언급URL : https://stackoverflow.com/questions/12320467/jquery-cors-content-type-options
'programing' 카테고리의 다른 글
MS SQL Server Management Studio FREE EDITION과 동등한 Oracle은 무엇입니까? (0) | 2023.03.26 |
---|---|
네스트된 ng-dex 내에서 2개의 $index 값 전달 (0) | 2023.03.26 |
Mongodb는 CAP 정리에서 어디에 위치합니까? (0) | 2023.03.26 |
구성에서 '서비스' 유형의 빈을 정의하는 것을 고려합니다[스프링 부트] (0) | 2023.03.26 |
Next.js "빌드 타임"은 정확히 언제 발생합니까? (0) | 2023.03.26 |