IE8 / 9에서 jQuery 및 XDomainRequest가있는 CORS
업데이트 : 나는 XDomainRequest에 시간을 투자하지 않는 것이 좋습니다. 왜냐하면 그것은 많은 제한이있는 매우 형편없는 구현이기 때문입니다. 기본적으로 비 SSL 서버에 대한 GET 요청에만 실제로 작동하므로 jsonp 등을 사용하는 것이 좋습니다.
CORS를 사용하여 도메인 간 API를 호출하고 있지만 Internet Explorer에서 문제가 발생합니다. CORS는 XDomainRequest
개체를 통해 IE8 및 IE9에서 가능해야 하지만 작업을 수행 할 수 없습니다 ..
JQuery 는 XDomainRequest에 대한 기본 지원 제공을 거부 하지만이 지원을 추가하려면 여러 jQuery 플러그인이 제안됩니다. 이 주제 에서는 작동하는 것으로보고 된 두 가지 플러그인 인 jQuery.XDomainRequest.js 및 xdr.js를 제안 합니다. Afaik, 플러그인은 자동으로 jQuery.ajax
. 여기서 다른 플러그인을 찾았 습니다 .
CORS 지원 서버에 대한 ajax 요청을 수행 하는 각 플러그인 jQuery.XDomainRequest 및 xdr 및 jquery.ie.cors 로 약간의 데모 페이지를 배치했습니다 . 페이지는 Chrome 및 Firefox에서 작동하지만 IE8 / 9는 즉시 권한 거부 오류를 발생시킵니다 (요청하기 전에도). 이 MSDN 게시물 은 다른 처리기를 추가하는 것이 xhr.onprogress = function() {};
좋지만 이것을 시도했지만 작동하지 않습니다.
내가 뭘 잘못하고 있는지 단서가 있습니까? 나는 또한 MS 가상 서버를 사용하여 IE8로 테스트했지만 정확히 동일한 문제가 있습니다.
편집 : 좋아 그래서 나는 HTTPS를 통해 POST를 사용하고 있다는 문제가 있다는 것을 알았습니다. 분명히 XDomainRequest는 HTTPS를 통한 CORS를 허용하지 않습니다. HTTP로 전환 할 수 있지만 정말 POST가 필요합니다.
Edit2 : 이 이야기의 끝은 github에서이 문제를 참조하십시오 . HTTP POST를 사용할 때 xDomainRequest는 요청 본문 (인수)을 text/plain
. 모두가 application/x-www-form-urlencoded
또는 multipart/form-data
.
POST 메서드가 지원되며 교차 도메인 https : // 요청을하려면 호출 페이지도 https를 통해로드되어야합니다. 이것은 XDomainRequest의 이러한 제한 사항과 기타 제한 사항을 자세히 설명하는 내가 찾은 최고의 기사입니다.
IE9 이하를 사용하는 경우 프록시로 정상적으로 다운 그레이드되는 프록시를 작성했습니다. ASP.NET을 사용하는 경우 코드를 전혀 변경할 필요가 없습니다.
해결책은 두 부분으로 나뉩니다. 첫 번째는 jQuery ajax 처리에 연결되는 jquery 스크립트입니다. crossDomain 요청이 이루어지고 브라우저가 IE이면 자동으로 웹 서버를 호출합니다.
$.ajaxPrefilter(function (options, originalOptions, jqXhr) {
if (!window.CorsProxyUrl) {
window.CorsProxyUrl = '/corsproxy/';
}
// only proxy those requests
// that are marked as crossDomain requests.
if (!options.crossDomain) {
return;
}
if (getIeVersion() && getIeVersion() < 10) {
var url = options.url;
options.beforeSend = function (request) {
request.setRequestHeader("X-CorsProxy-Url", url);
};
options.url = window.CorsProxyUrl;
options.crossDomain = false;
}
});
웹 서버에서 요청을 수신하고 X-CorsProxy-Url
http 헤더 에서 값을 가져 와서 HTTP 요청을 수행하고 마지막으로 결과를 반환해야합니다.
내 블로그 게시물 : http://blog.gauffin.org/2014/04/how-to-use-cors-requests-in-internet-explorer-9-and-below/
들어 CORS의 IE8에서 요청 / 9 당신은 jQuery를 플러그인을 사용할 수 있습니다 JQuery와 - 운송 XDR을
참고 URL : https://stackoverflow.com/questions/11487216/cors-with-jquery-and-xdomainrequest-in-ie8-9
'UFO ET IT' 카테고리의 다른 글
Enumerable.Range와 기존 for 루프를 사용한 foreach에 대한 생각 (0) | 2020.11.29 |
---|---|
.map 파일에서 메모리 레이아웃을 그래픽으로 표시하려면 어떻게해야합니까? (0) | 2020.11.28 |
MVC 사용자 지정 유효성 검사 : 두 날짜 비교 (0) | 2020.11.28 |
코드에서 ActionBar 액션에 하위 메뉴 항목을 추가하는 방법은 무엇입니까? (0) | 2020.11.28 |
원격 Git 저장소에 대한 쓰기 액세스를 어떻게 확인할 수 있습니까 ( "푸시 할 수 있습니까?"). (0) | 2020.11.28 |