728x90


WebBrowser

웹브라우저 ActiveX/Plugin의 Wrapper 컴포넌트(iframe과 비슷한 기능인 듯)



✅ 주요 속성 / 메서드

- set: WebBrowser에 표시될 웹페이지의 URL을 설정하는 속성
- onloadcompleted(): WebBrowser에 요청한 웹페이지가 로딩 되었을 때 발생하는 이벤트
- onusernotify(): WebBrowser에 로드된 웹페이지에서 nexacro 쪽으로 정보를 전달할 때 발생하는 이벤트


내 상황😕


파일 다운로드할 때 필요한 데이터를 RSA로 암호화


1. 클라이언트단에서 RSA를 비동기 호출
2. 서버에서 공개키/비공개키 생성 후, 비공개키는 세션 정보에 담고, 공개키는 리턴
3. 리턴받은 공개키를 가지고 jsp에서 암호화 작업
(파일 다운로드를 요청할 때마다 공개키가 동적으로 생성되기 때문에 공개키를 jsp로 리턴)
4. 리턴 받은 공개키를 가지고 데이터 암호화 처리 후, 이를 넥사크로 쪽에 object로 반환
5. 넥사크로 쪽에서 암호화된 정보를 가진 object를 서버에 전송

이 과정에서 나는 넥사크로 WebBrowser 컴포넌트를 이용하여 jsp를 로드한 후, jsp 내 선언된 암호화 메소드를 호출하려고 했음.

그래서 form onload 메서드에서 WebBrowser 컴포넌트의 url을 설정해주고, 파일 다운로드 메서드 내에서 WebBrowser.callMethod(“aaa”);를 호출했는데 로컬에선 문제없이 돌아감.

근데 개발 서버에 올리니까 간헐적으로 에러가 나는거임.

에러
Uncaught TypeError: Cannot read properties of null (reading 'aaa')


해결책🧐


알고보니 WebBrowser 내 callMethod는 WebBrowser 내 페이지의 로딩 유무와 관계없이 비동기 호출되는 거였음!
그래서 onloadcompleted를 사용해서 WebBrowser에 페이지가 로딩된 후에 callMethod를 호출하도록 수정함.




728x90

+ Recent posts