오늘 한 동안 이것 때문에 고생하다가, 검색해보니, Same origin policy 때문에 원래 안되는 걸 엉뚱한 자바스크립트만 이리 저리 바꾸고 있었습니다 ㅠ.ㅠ
여하튼 해결 방법은 Response Header에 "Access-Control-Allow-Origin: *"를 추가하는 것 입니다. 아래 소스는 델파이로 만든 웹 서버에서 이를 처리하는 예제 입니다.
type
TfmMain = class(TForm)
IdHTTPServer: TIdHTTPServer;
moMsg: TMemo;
procedure IdHTTPServerCommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
procedure IdHTTPServerException(AContext: TIdContext;
AException: Exception);
private
public
end;
var
fmMain: TfmMain;
implementation
{$R *.dfm}
procedure TfmMain.IdHTTPServerCommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
AResponseInfo.CustomHeaders.Values['Access-Control-Allow-Origin'] := '*';
AResponseInfo.ContentText := 'Hi';
end;
아래 소스는 jQuery를 이용해서 델파이로 만든 웹 서버에서 데이터를 쿼리하는 과정입니다.
<script type="text/javascript">
$.get('http://127.0.0.1:1234/Hello?',
function(data) {
alert('Result: ' + data);
}
)
.error(function() { alert("error"); });
</script>
[그림 1] 실행 결과
'프로그래밍 > Delphi' 카테고리의 다른 글
| 인터페이스 릴레이에서 최대한 메소드 호출 시간 절약하기 (0) | 2012.07.03 |
|---|---|
| 64비트에서 WSAAccept 오동작 문제 (0) | 2012.06.29 |
| Same origin policy 때문에 다른 포트로 jQuery에서 get이나 post를 할 수 없을 때 (0) | 2012.05.22 |
| Record vs Object (0) | 2012.04.27 |
| 비트 모아 기가 바이트 (3) | 2012.03.26 |
| 변칙으로 사용하는 TDD (0) | 2011.07.01 |


