현재 프로젝트에서는 순수 HTML5 업로드 컴포넌트인 Fineuploader를 사용하고 있으며, 개발 과정에서 로그인 쿠키에 의해 설정된 도메인은 루트 도메인 아래에 별도로 업로드 서비스가 배치됩니다. 사용자는 로그인 감지 후 항상 로그인되지 않은 페이지로 리디렉션되는 것으로 나타났습니다. 조사 결과 ajax xhr 요청에 쿠키가 포함되지 않은 것으로 나타났습니다.
온라인으로 검색하고
썼습니다.
Native ajax request method:
var xhr = new XMLHttpRequest(); xhr.open("POST", "http://xxxx.com/demo/b/index.php", true); xhr.withCredentials = true; //支持跨域发送cookies xhr.send();
jquery's ajax post method request:
$.ajax({ type: "POST", url: "http://xxx.com/api/test", dataType: 'jsonp', xhrFields: { withCredentials: true }, crossDomain: true, success:function(){ }, error:function(){ } })
서버측 설정:
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: http://www .xxx.com");
백엔드 해당 조정이 이루어졌습니다. 프론트엔드 부분은 Fineuploader가 포함되어 있기 때문에 코드에서 withCredentials라는 키워드만 검색해서 공식문서에 가서 읽어봤습니다. cors 구성이 있습니다 http://docs.fineuploader.com/api/ options.html#cors
구성 줄에 다음 구성을 추가하면 괜찮습니다
Js 코드
cors: { allowXdr: true,// 此参数目前不知道有啥用 expected: true, sendCredentials: true }
수정 후 문제가 해결되었습니다.