[JQUERY] CORS POST 요청을 jQuery를 함께 일반 자바 스크립트에서 작동하지만, 왜?
JQUERYCORS POST 요청을 jQuery를 함께 일반 자바 스크립트에서 작동하지만, 왜?
해결법
-
1.UPDATE :로 TimK이는 더 이상 JQuery와 1.5.2 필요하지 않습니다 지적했다. 당신이 (등 사용자 이름, 암호, 또는 쿠키) 자격 증명의 사용을 사용자 정의 헤더를 추가하거나 허용 할 경우에, 읽어.
UPDATE :로 TimK이는 더 이상 JQuery와 1.5.2 필요하지 않습니다 지적했다. 당신이 (등 사용자 이름, 암호, 또는 쿠키) 자격 증명의 사용을 사용자 정의 헤더를 추가하거나 허용 할 경우에, 읽어.
나는 답을 찾은 것 같아! (4 시간 이상 저주 많은)
//This does not work!! Access-Control-Allow-Headers: *
수동 수락 모든 헤더를 지정해야합니다 (FF 4.0 & 크롬 10.0.648.204에서 나를 위해 사건이었다 그 이상).
jQuery의 $ 아약스 방법은이 "X가 요청한-에"모든 도메인 간 요청 헤더 (내가 유일한 크로스 도메인을 생각) 보냅니다.
옵션 요청에 응답하는 데 필요한 누락 된 헤더는 그래서 :
//no longer needed as of jquery 1.5.2 Access-Control-Allow-Headers: x-requested-with
당신이 아닌 "간단한"헤더를 전달하는 경우 목록에 포함해야합니다 (내가 하나 더 보낼 수) :
//only need part of this for my custom header Access-Control-Allow-Headers: x-requested-with, x-requested-by
그래서 그것을 모두 함께 넣어, 여기 내 PHP는 :
// * wont work in FF w/ Allow-Credentials //if you dont need Allow-Credentials, * seems to work header('Access-Control-Allow-Origin: http://www.example.com'); //if you need cookies or login etc header('Access-Control-Allow-Credentials: true'); if ($this->getRequestMethod() == 'OPTIONS') { header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); header('Access-Control-Max-Age: 604800'); //if you need special headers header('Access-Control-Allow-Headers: x-requested-with'); exit(0); }
-
2.또 다른 가능성은 설정 데이터 형식입니다 : JSON은 콘텐츠 형식을 보내 JQuery와 원인 : 응용 프로그램 / JSON 헤더입니다. 이 CORS하여 비 표준 헤더로 간주하고, CORS 프리 플라이트 요청이 필요합니다. 시도 몇 가지 그래서 :
또 다른 가능성은 설정 데이터 형식입니다 : JSON은 콘텐츠 형식을 보내 JQuery와 원인 : 응용 프로그램 / JSON 헤더입니다. 이 CORS하여 비 표준 헤더로 간주하고, CORS 프리 플라이트 요청이 필요합니다. 시도 몇 가지 그래서 :
1) 적절한 프리 플라이트 응답을 보내는 서버를 구성하십시오. 이는 Access-Control-Allow-방법 및 액세스 제어 - 허용 - 헤더 같은 추가 헤더의 형태로 될 것입니다.
JSON 설정 : 2) 데이터 유형을 삭제합니다. JQuery와 콘텐츠 형식을 요청해야합니다 : contentType이와 JSON : 응용 프로그램 / 기본적으로 x-www-form-urlencoded를, 그러나 다만 확실하게, 당신은 데이터 유형을 대체 할 수있는 '응용 프로그램 / x-www-form-urlencoded를'
-
3.당신은 JS에서 "PARAMS"를 보내고있다 : (PARAMS)를 request.send;
당신은 JS에서 "PARAMS"를 보내고있다 : (PARAMS)를 request.send;
하지만 "데이터" "JQuery와에가. 데이터를 정의? 데이터 : 데이터,
또한, 당신은 URL에 오류가 있습니다 :
$.ajax( {url:url, type:"POST", dataType:"json", data:data, success:function(data, textStatus, jqXHR) {alert("success");}, error: function(jqXHR, textStatus, errorThrown) {alert("failure");} });
당신은 $ .post에 대한 하나의 구문을 믹싱
업데이트 : monsur 답변에 따라 주위에 인터넷 검색을했다, 그리고 난 당신이 액세스 제어 - 허용 - 헤더를 추가 할 필요가 있음을 발견 콘텐츠 형식 (아래 전체 단락입니다)
http://metajack.im/2010/01/19/crossdomain-ajax-for-xmpp-http-binding-made-easy/
-
4.이 POST에서 옵션, 완료되기 전에 CORS 때문에, 귀하의 게시물 데이터가 전송되지 않습니다 요청 방법을 변경합니다. 이 고르 문제를 처리하기 위해 노력하는 방법은, 옵션 메서드를 지원하지 않습니다 아약스와 요청을 수행하고 있습니다. 예제 코드 :
이 POST에서 옵션, 완료되기 전에 CORS 때문에, 귀하의 게시물 데이터가 전송되지 않습니다 요청 방법을 변경합니다. 이 고르 문제를 처리하기 위해 노력하는 방법은, 옵션 메서드를 지원하지 않습니다 아약스와 요청을 수행하고 있습니다. 예제 코드 :
$.ajax({ type: "POST", crossdomain: true, url: "http://localhost:1415/anything", dataType: "json", data: JSON.stringify({ anydata1: "any1", anydata2: "any2", }), success: function (result) { console.log(result) }, error: function (xhr, status, err) { console.error(xhr, status, err); } });
C #을 서버에서이 헤더 :
if (request.HttpMethod == "OPTIONS") { response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With"); response.AddHeader("Access-Control-Allow-Methods", "GET, POST"); response.AddHeader("Access-Control-Max-Age", "1728000"); } response.AppendHeader("Access-Control-Allow-Origin", "*");
-
5.다음과 같은 방법으로 jQuery를 수정합니다 :
다음과 같은 방법으로 jQuery를 수정합니다 :
$.ajax({ url: someurl, contentType: 'application/json', data: JSONObject, headers: { 'Access-Control-Allow-Origin': '*' }, //add this line dataType: 'json', type: 'POST', success: function (Data) {....} });
from https://stackoverflow.com/questions/5584923/a-cors-post-request-works-from-plain-javascript-but-why-not-with-jquery by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] POST (AJAX) JSON 통해 데이터를 전송 및 JSON 제어기로부터 응답을 수신 (MVC) (0) | 2020.10.14 |
---|---|
[JQUERY] DIV가 넘쳐 요소가있는 경우 jQuery로 확인 (0) | 2020.10.14 |
[JQUERY] 자바 스크립트 / jQuery를 사용하여 Excel로 내보내기 HTML 테이블 데이터는 크롬 브라우저에서 제대로 작동하지 않습니다 (0) | 2020.10.14 |
[JQUERY] 사용하지 않도록 설정하는 가장 쉬운 방법은 무엇입니까 / 사용 버튼과 링크 (jQuery를 + 부트 스트랩) (0) | 2020.10.14 |
[JQUERY] 터치 장치 자바 드래그 앤 드롭 [폐쇄] (0) | 2020.10.14 |