홈 > 프로그래밍 > 웹

SecurityError: Permission denied to access property "toJSON"…

드리머즈 0 7525

안녕하세요. 드리머즈입니다.


파이어폭스로 웹 개발 중에.. 아래의 이슈를 만났습니다.

SecurityError: Permission denied to access property "toJSON" on cross-origin object

에러가 발생한 곳은.. 여기입니다.
1
console.log("JSON.stringify(this) = " + JSON.stringify(this));
cs

참고로 this는 서버로부터 받은 JSON 형태의 문자열입니다.

세션 스토리지에 저장하기 위해 JSON.stringify를 사용하니까 에러가 발생하네요.
기존에 잘 사용했던 함수인데 이상합니다.

이상하게 에러 검색이 안되서
구글 크롬에서 동일한 테스트를 해봤습니다.
Uncaught TypeError: Converting circular structure to JSON

라고 에러가 뜹니다.
실제로 순환구조(circular structure)는 아닌 것 같은데 이상하네요.

알고보니 제 실수였습니다.
xhttp에서
callback(this.responseText); 코드를 통해 콜백에 인자를 넘겨주고 있었는데
받는 쪽에서 this로 받고 있었습니다.

callback.apply(this.responseText)를 사용중이었다면 괜찮았겠지만
callback(this.responseText);을 사용하면 받는 쪽에선 arguments[0]으로 받아야 합니다.

arguments[0]으로 받으면 
JSON.parse(arguments[0]);
코드를 이용해 파싱한 것은 세션 스토리지에 저장하면 됩니다.

오랜만에 웹 코드를 봐서 삽질을 했네요 ㅜㅜ




0 Comments
제목