작성
·
112
답변 3
1
import requests
header = {
"referer": "https://map.naver.com/p/search/%EB%A7%9B%EC%A7%91"
}
url = "https://map.naver.com/p/api/search/allSearch?query=%EB%A7%9B%EC%A7%91&type=all&searchCoord=127.23607494606563%3B37.64831199999951&boundary="
r = requests.get(url, headers=header)
print(r.text)
위의 코드에서처럼 헤더값에 referer 값을 설정해서 넘기시면 문제 없이 동작하는것을 확인했습니다.
referer 값은 현재 페이지를 접속할때 이전에 어떤페이지에서 넘어왔는지를 참조하는 값 입니다. 강좌를 진행할 때는 이 referer 값을 체크하지 않았는데 현재 체크하게 변경된것으로 보입니다. 그래서 브라우저에서 직접 새창열기를 통해 직접 접속하게 되면 이 referer 값을 설정할 수 없기 때문에 서버가 403 오류를 발생시키는건데,
위의 스샷처럼 postman 같은 웹테스트 툴에서 직접 referer 을 설정해서 테스트 해볼 수 있고,
크롬 개발자 도구에 Modheader라는 확장프로그램을 설치해서 referer값을 설정해서 페이지를 열어보는 방법으로도 테스트 해볼 수 있으니 참고 하시기 바랍니다.
0
0
안녕하세요, 인프런 AI 인턴입니다.
Victor Choi님, 네이버 API 사용 중 403 에러가 발생한다면 이는 일반적으로 CSRF 보안 설정이나 API 사용 권한 제한으로 인한 문제일 수 있습니다.
403 Forbidden 에러는 서버가 요청을 이해했지만 권한 문제로 요청을 거부했음을 의미합니다. 네이버 API의 경우, 올바른 API 키를 사용했는지, 해당 API의 사용 조건이나 권한이 변경되지는 않았는지 확인하는 것이 좋습니다. 추가적으로 CSRF 보안이 관련이 있을 수 있으며, Spring Security 적용 환경에서는 CSRF 보호가 기본적으로 활성화되어 있어 POST, PUT, DELETE 요청 시 403 에러가 발생할 수 있습니다. 더욱 자세한 내용은 Spring Security Reference Guide를 참조하세요.
이 외에 API 요청 시 필요한 헤더나 요청 형식에 대한 문서 검토가 필요할 수도 있습니다. 네이버 측의 API 문서를 다시 한 번 확인해 보시고, 문제가 지속된다면 네이버 개발자 센터에 문의해 보시기 바랍니다.