A null value cannot be assigned to a primitive type 에러가 발생했다. 

 

 

이건 기본형(primitive type) 에 null 값이 들어갔기 때문에 나는 에러이다. 

 

Ok. 원인파악 완료.

 

 

 

그런데 왜?? null 이 들어갈 수 없는거지? 

 

자바의 함수 호출방식은 두가지가 있다. 

 

Call by Value :  말 그대로 값을 저장하고 있는 상태 
Call by Reference : 데이터가 저장된 주소를 가지고 있는 상태 

 

 

기본형(primitive type)은 Call by Value 이며,

예) int, float,. ... 

 

참조형 타입(Reference type)는 Call by Reference라고 보면 된다.  

예) String, Integer, Array.. 

 

 

기본형들은 범위가 이미 지정되어 있을 분더러 값 자체를 가지고 오는데 

 

null 이라는 건 미확인 값이나 아직 적용되지 않은 값을 의미한다고 한다. 

 

그렇기 때문에 기본형( 값의 범위가 지정되어 있음)에는 null이 불가하고 

 

 

참조형 같은 경우는 Reference 값 즉 테이터가 아닌 데이터가 담긴 주소값을 가지고 있기 때문에 

null 설정이 가능하다고 이해하면 되겠다. 

 

주소는 있지만 값이 안들어 있을 순 있으니!

 

 

 

 

 

 

* 에러발생 

html 파일에서 ajax로 

통신이 이루어지는지 잘 보이기 위한 테스트 페이지를 구현하기 위해

url이 다른 서버로 요청을 보냈다. 

 

Access to XMLHttpRequest at 'file:///D:/apache/index.html' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, brave, https.

 

* 원인

같은 경로의 자원을 요청하는데 에러 메세지엔 보시다시피 origin, 즉 출처가 null 로 넘어온 script에 대한 접근이 CORS 정책에 따라 제한되었다고 나와있습니다. 

 

D:/apache/index.htm 에서 ajax로 c:/경로/js/test.js에 리소스를 요청한 건 동일 경로의 리소스를 요청한 것이 아니고
D:/apache/index.htm 에서 null/js/test.js로 리소스를 요청한 것이 되어 CORS에러가 발생한 것입니다.

 

 

 

웹 서버에 올려 프로토콜 호스트 포트를 같게 만들면 CORS 에러가 해결되는데,

 

같게 할 수 없는 상황에선 특정 플러그인을 사용하거나 jsonp 방식을 사용한다. 

 

+ Recent posts