도메인 간 HTML 페이지가 이미지 리소스를 요청할 때 오류가 보고됩니다. 리소스를 로드하지 못했습니다. 서버가 403(금지됨) 상태로 응답했습니다.

       작성자는 최근에 Spring 부트 프로젝트를 완료했습니다.홈 페이지의 index.html 페이지 요소 <img>는 타사 서버의 이미지 링크를 참조합니다.http://localhost 또는 http://127.0.0.1 입력 로컬 테스트 환경에서 홈 페이지를 열면 이미지가 정상적으로 표시되며 브라우저에서 이미지 경로를 직접 입력해도 정상적으로 표시됩니다.

<img class="banner-image" src="http://img.xxx.cn/image/056ef627a026b86c45be1ce0bb12df5b.jpeg" width="100%" />

       하지만 프로젝트가 패키징되어 서버에 릴리스된 후 브라우저가 사이트의 홈페이지 경로에 들어간 후 페이지의 이미지 표시 영역에 큰 빈 상자가 나타나므로 브라우저 콘솔을 확인하고 오류를 찾습니다. 리소스 로드 실패: 서버가 403(금지됨) 상태로 응답했습니다.

       관련 내용을 상담한 결과, 이는 핫링크를 방지하려는 서버의 전략 때문임을 알게 되었습니다. 일반적으로 서버 사이트에서 이미지 리소스를 다운로드하면 관련 트래픽 요금(예: Alibaba Cloud의 oss 서버)이 발생하므로 유사한 핫링크가 발생하지 않도록 하는 몇 가지 방법이 필요합니다. 정보, 헤더의 리퍼러는 이미지 리소스가 있는 서버로 어느 사이트(도메인 이름)에서 왔는지를 나타냅니다. 페이지를 요청하면 패킷 캡처 소프트웨어를 통해 리퍼러 헤더 정보의 특정 내용을 볼 수도 있습니다. .일반적으로 그것은 귀하의 사이트의 도메인 이름입니다.

       리퍼러의 내용은 서버 측에서 얻을 수 있으며 필요에 따라 처리할 수 있습니다.예를 들어 리퍼러의 내용이 비어 있거나 화이트리스트에 있으면 거머리 방지 처리가 수행되지 않습니다.그렇지 않으면 403 메시지가 표시됩니다. 현재 간단한 해결책이 있습니다. 이 문제에 대한 해결책은 HTML 페이지에 메타 속성을 추가하는 것입니다.

<meta name="referrer" content="no-referrer" />

       이 처리 후 페이지가 타사 서버에서 이미지 리소스를 요청하면 헤더의 리퍼러 헤더 정보가 비어 있습니다. 타사 사이트에서 참조 페이지가 비어 있는 리소스 요청을 허용하는 경우 정상적으로 이미지 리소스를 요청할 수 있습니다.

참조: 리퍼러 전략 및 메타 태그 문제

추천

출처blog.csdn.net/crazestone0614/article/details/126639645