2016-09-21 7 views
0

Delphi Datasnap 기술로 개발 된 OpenUI5 웹 앱이 있습니다. 업로드 컬렉션 구성 요소를 사용하여 필드 목록을 관리합니다. https://openui5.hana.ondemand.com/explored.html#/entity/sap.m.UploadCollection/properties 구성 요소는 파일을 업로드 할 때 Http OPTIONS 호출을 보내 서버에서 호출 할 수있는 http 메서드 목록을 검색합니다. 는 HTTP를 전송하지 않고 구성 요소에 의해HTTP 옵션을 사용하지 않고 파일 업로드

  1. 보내기 HTTP의 POST : 문제는 DataSnap 서버가 아닌 핸들 HTTP 옵션을 수행하고 501 오류 코드를 나는 이러한 솔루션 중 하나를 실현하기 위해 노력하고있어 http://docwiki.embarcadero.com/RADStudio/Seattle/en/DataSnap_REST

    를 반환한다는 것입니다

  2. 전에 옵션은
  3. 이 옵션은 구성 요소에 의해 호출 보내기 자동 게시물을 사용하고 있지만 억제 Base64 인코딩으로 내 문서를 보내 서버의 DataSnap으로는 HTTP POST 호출을 관리

해결책은 무엇입니까?

답변

3

여기서 실제로 일어나고있는 것에 대해 약간 혼란이있을 수 있습니다. UI5가 표시되는 OPTIONS 통화 뒤에 명시 적으로 있지는 않지만 브라우저는 있습니다. 브라우저는 서버에서 GET$metadata에게 OData 서비스를 검사하고 지원하는 엔티티 및 기능을 확인하도록 지시받습니다. OData 서버가 웹 응용 프로그램과 동일한 서버가 아닌 것 같아 브라우저가 프리 플라이트를 실행하여이 GET 요청을 실행해도 괜찮은지 확인합니다.

브라우저가이 프리 플라이트를 OPTIONS 요청으로 실행하고 있으므로 서버는 서비스 호출이 허용됨을 나타내는 일련의 헤더를 반환합니다. 브라우저가 서버에서 OK-sign을 수신하면 UI5가 브라우저에 확인하도록 요청한 실제 GET 호출이 수행됩니다.

CORS와 관련된 문제는 응용 프로그램과 다른 서버에서 실행중인 웹 응용 프로그램에 매우 일반적입니다. 가장 일반적인 해결책은 웹 응용 프로그램을 실행중인 서버에서 서비스를 프록시하여 서비스가 동일한 서버에서 실행중인 것처럼 보이게하는 것입니다. 이 경우 브라우저는이 사전 비행 CORS 확인을 실행하지 않습니다.

또는 CORS 호출을 지원해야합니다. 즉, OPTIONS 메서드를 지원해야하며 OData 서비스를 실행하는 서버에서 CORS 헤더 (등)를 반환해야합니다.

+0

아주 잘 설명했습니다! 또한 wikipedia를 확인하십시오 : https://en.wikipedia.org/wiki/Cross-origin_resource_sharing –