♣ Tech & Biz Salon/Tech

Ajax cross-domain 파일업로드는 일단 접음

TasteGod 2014. 2. 21. 17:49

구글에 XmlHttpRequest 를 사용해서 하라는 가이드가 있어서 보다보니...

그거로만 되는건 아닌거 같음.


브라우저 콘솔에 이런게 뜨는데...이건 요청 브라우저단에서 크로스서버의 response 받기 전에 보여주는거 같기도 하다...

No 'Access-Control-Allow-Origin' header is present on the requested resource


크로스 서버로 요청이 아예 안들어가는건 아닌데, 제대로 들어가지는 않을것으로 보임.


파일처리서버는 내가 만든게 아닌데....

정 해야한다면 방법을 찾으면 되겠지만...  그냥 추후 서버를 합치는 방법으로 해야 할 거 같음.


추후 서버 합칠때.. Port가 다를 경우에도 cross-domain 에 걸린다고 하는데, 그땐 dataType 을 jsonp 로 하는 방법 등으로 처리하면 될 거 같다. 

아님 아예 완전 합쳐도 될 거 같고...

jQuery - Ajax - crossdomain 이슈
http://igna.tistory.com/19

단 에러처리가 안되기때문에.. 아래의 방법으로 해보는것도 가능할거 같다. 몇년전 자료라 요새 환경에서도 pass 될지는 모르겠다.

일단 접은 관계로... 더 테스트 해보진 않았다.

jQuery - Ajax - crossdomain 이슈 #2
http://igna.tistory.com/20


** 지금 다시보다보니... 크로스 서버쪽 allow header 설정에... X-Requested-With 넣어서 해봤어야 했는데 

Content-Type 

만 넣었었네... 쩝... 이거 넣어도 지금 요청 브라우저 자체에서 먼저 뭔가 하는거 같아서 안될거 같긴 하다.

참고 : res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

** 코딩한 소스 다 지워버렸는데... 사실 넣어봤자 현상황에 큰 도움이 안된다. 왜냐면 다음 포스트에 적을건데... 현재 파일업로드후 파일이미지 정보를 받아와서 캔버스에 넣는데.... cross-domain 이미지가 캔버스에 들어가면 그 캔버스 toDataUrl 이 에러가 나서... 캔버스 캡쳐 기능 작동에서 에러가 나기 땜시롱...

** 만약 XMLHttpRequest 로 업로드가 성공한다면... 파일 등록 아이디등 결과값 받는것은 xhr.addEventListener(....) 로 콜백 펑션을 지정해서 그쪽에서 값을 받을수 있는거 같다.

http://www.matlus.com/html5-file-upload-with-progress/

** 일단은 파일 업로드 기능이 크로스 도메인에 되게 해서 쓰고 있는데, 소스를 고친거는 아니고

크롬 실행할때 chrome.exe --disable-web-security 요렇게 되게 하고 있음.


이래저래 하는 시도하는 과정에서 참고한 url 을 붙여둔다.  
( 파일업로드가 아닌 ajax cross-domain 의 경우에는 PASS가 될수도 있을거 같다...  예전엔 확실히 되었는데 브라우저, jquery 업그레이드 등으로 요샌 안될수도 있을것이다. )

http://stackoverflow.com/questions/5157361/jquery-equivalent-to-xmlhttprequests-upload

http://stackoverflow.com/questions/18310394/no-access-control-allow-origin-node-apache-port-issue

http://blog.naver.com/sef16/70169387710

http://mathiasbynens.be/notes/xhr-responsetype-json

http://teragoon.wordpress.com/2013/03/29/426/

http://www.matlus.com/html5-file-upload-with-progress/