내 https 도메인에서 http 도메인으로 리퍼러 헤더를 전달하려면 어떻게해야합니까?


12

내 웹 사이트는 100 % https입니다. 다른 http 도메인에 대한 링크가 있습니다. https 페이지에서 http 페이지로 링크 할 때 참조 헤더가 설정되지 않습니다. 에서 http://en.wikipedia.org/wiki/HTTP_referrer

웹 사이트가 HTTP 보안 (HTTPS) 연결에서 액세스되고 링크가 다른 보안 위치를 제외한 다른 위치를 가리키는 경우 참조 필드가 전송되지 않습니다.

트래픽이 내 도메인에서 발생한다는 것을 알 수 있도록 다른 도메인 에서 리퍼러를 볼 있기를 바랍니다. 이 헤더를 강제하는 방법이 있습니까? 아니면 다른 해결책이 있습니까?

최신 정보

리디렉션을 사용하여 몇 가지 기본 테스트를 수행했습니다.

http page  -- link to http  --> 301 redirect --> http page = referrer intact
https page -- link to https --> 301 redirect --> http page = referrer blank
https page -- link to http  --> 301 redirect --> http page = referrer blank
https page -- link to http  --> 302 redirect --> http page = referrer blank

https 페이지에서 내 도메인의 http 리디렉션 페이지로 연결할 때 리퍼러가 손실됩니다. 따라서 리디렉션에 리퍼러가 없습니다.


Origin하지만 사용 사례에 맞지 않을 수 있으므로, 그대로 있어야한다.
Pacerier

답변:



8

나도 같은 문제가 있었다. 아래처럼 메타 태그를 추가하여 해결하면 Chrome 및 Safari에서만 작동합니다.

<meta name="Referrer" content="origin">

6

안타깝게도 HTTP를 사용하는 사이트를 HTTPS에서 리퍼러 할 수 없습니다. 그러나 HTTPS-HTTPS 또는 HTTP-HTTPS를 수행 할 수 있습니다.

출처

추천 페이지가 보안 프로토콜로 전송 된 경우 클라이언트는 (비보안) HTTP 요청에 Referer 헤더 필드를 포함하지 않아야합니다.

해결 방법은 HTTP로 리디렉션 한 후 리디렉션하는 HTTPS에서 방문자에게 연결하는 대신 내부 리디렉션 스크립트를 사용하는 것입니다.

예를 들면 다음과 같습니다.

<a href="http://www.yours.com/out.php?www.other.com">www.outboundsite.com</a> 그러나 이것은 원래 리퍼러를 사용하지 않습니다.

또 다른 가능성은 참조자가 아닌 트랙백을 사용 하는 것으로 HTTPS에서 작동한다는 것을 알고 있습니다.


테스트 결과 리디렉션 사용이 작동하지 않는 것으로 나타났습니다 (업데이트 참조).
호두 까기 인형

트랙백을 사용하거나 HTTPS를 잃어 라;)
Simon Hayter

1
@bybe,이 답변은 수정이 필요합니다. 참조 serverfault.com/a/520603/87017webmasters.stackexchange.com/a/71331/7654
Pacerier

4

HTTPS 페이지에서 다른 도메인의 HTTP 페이지로의 링크를 설정하고 다음 기술을 사용하여 첫 번째 페이지의 URL을 참조 자로 전달할 수있었습니다.

정의

원본 페이지 : HTTP 호스팅 대상 페이지에 대한 링크가있는 HTTPS 페이지. 이 예에서 :https://example1.com/origin.html

대상 페이지 : 원본 페이지의 리퍼러에 액세스 할 수있는 HTTP 페이지. 이 예에서 :http://example2.com/destination.html

기본 계획

이는 HTTP 버전의 오리진 페이지에서 경로 재 지정을 수행하는 효과가 있습니다.

  1. HTTPS 원본 페이지의 링크는 현재 페이지에 연결되지만 대상 페이지에 대한 쿼리 매개 변수를 추가합니다 [1]. 예 :https://example1.com/origin.html?goto=http://example2.com/destination.html

  2. 링크를 클릭하면 example1.com의 서버가 쿼리 매개 변수 'goto'가있을 때 표준 요청을 중단합니다. 그런 다음 :

    • 'goto'매개 변수를 'goto'쿠키에 저장합니다.
    • 현재 요청의 URL에서 'goto'매개 변수 및 값을 제거합니다.
    • 302는 원래 도메인의 HTTP 버전에서이 새로 정리 된 URL로 리디렉션합니다. http://example1.com/origin.html
  3. 서버는 'goto'쿠키에 대한 모든 요청을 확인하고 쿠키가 있으면 쿠키를 지우고 매우 간단한 리디렉션 페이지를 렌더링합니다. 이 페이지에는 다음이 포함되어 있습니다 [2] :

    • goto 쿠키 URL로 리디렉션되는 Javascript window.location.replace () 스크립트
    • goto 쿠키 URL 값이 있고 몇 초 지연되는 메타 새로 고침 태그입니다.
    • goto 쿠키 URL에 대한 링크입니다.

노트

[1]이 기본 솔루션은 공개 리디렉터 이며 goto query 매개 변수를 사용하여 피싱 공격에서 UA를 리디렉션하는 나쁜 사람으로부터 보호하는 데 고려해야 할 사항이 있습니다.

[2] 모든 브라우저가 JS 리디렉션 또는 메타 새로 고침 태그를 통해 리디렉션 할 때 리퍼러를 전송하지는 않습니다. 내 테스트에서 IE8 이하는 참조자를 전달하지 않습니다.

이 기술을 통해 검색 엔진 크롤러가 링크를 따라갈 수 있는지 잘 모르겠습니다. 이것은 내 요구 사항에 중요하지 않습니다.

UA에 쿠키가 비활성화되어 있으면 원래 페이지로 다시 리디렉션됩니다.

리디렉션에만 HTTP 연결 허용

내 서버에는 요청에 관계없이 HTTPS를 시행하는 Apache 규칙이 있습니다.

<VirtualHost *:80>
    ServerName example1.com

    # if not on port 443 then 301 redirect to https while keeping any query string
    RewriteEngine              On
    RewriteCond %{HTTP_HOST}  ^example1\.com$ [NC]
    RewriteCond     %{SERVER_PORT} !443
    RewriteRule     ^(.*)$     https://%{HTTP_HOST}$1 [L,QSA,R=301]

위의 리디렉션 기술이 작동하려면 조건부로 HTTP 연결을 허용하는 방법이 필요합니다. 이를 수행하는 방법에는 여러 가지가 있습니다. 쿠키가 작동하기로 결정했습니다.

<VirtualHost *:80>
    ServerName example1.com

    # if not on port 443 then 301 redirect to https while keeping any query string
    RewriteEngine              On
    RewriteCond %{HTTP_HOST}  ^example1\.com$ [NC]
    RewriteCond     %{SERVER_PORT} !443
    RewriteCond %{HTTP_COOKIE}  !disable_ssl [NC]
    RewriteRule     ^(.*)$     https://%{HTTP_HOST}$1 [L,QSA,R=301]

disable_ssl 쿠키는 2 단계에서 설정 한 다음 3 단계에서 삭제됩니다.


좋아 .... 그러나 이것은 "추천자 헤더 "를 정확하게 전달하지 않습니다 .
Pacerier


0

원하는 것이 불가능한 것 같아서 가능한 해결 방법이 있습니다. 대상 사이트에서 Google 웹 로그 분석을 사용하는 경우 (또는 Piwik에서 유사한 구문을 사용하고 다른 통계 패키지는이를 무시하기 위해 사용한다고 생각되는 호환 프로그램) 예를 들어 example.com 링크에서 추적 매개 변수를 보낼 수 있습니다

http://www.example.com/?utm_campaign=spring&utm_medium=referral&utm_source=exampleblog

이 정보는 GA에 세부 정보와 함께 표시되며 다른 사람이 사용하지 않을 가능성이 높은 값을 선택해야합니다.

Google은 http://support.google.com/analytics/answer/1033867?hl=ko 에서 편리한 URL 작성 도구를 사용합니다 .

업데이트-re : 에티켓

교통의 본질에 대해 더 많이 알지 못하면 일반적으로 / 개인적으로 만 말할 수 있습니다 ...

에티켓은 항상 보는 사람의 눈에 들어올 것입니다. 이것이 없으면 GA에서 최소한 직접적이거나 아마도 (없음) 브랜드로 표시되어 브랜드가 원래보다 더 큰 것처럼 보이게 할 것입니다. 개인적으로 신중하게 선택한 캠페인을 선호하므로 트래픽이 어디에서 오는지 알 수 있습니다.

트래픽을 거의 보내지 않으면 아마 눈치 채지 못할 것입니다. 많이 보내면 아마 불평하지 않을 것입니다! 그들이 할 경우, 당신은 일반적으로 무료 트래픽을 줄 다른 사람을 찾을 수 있습니다!

매우 구체적이라면 문제를 일으키지 않아야합니다. 귀하의 사이트 이름으로 소스 캠페인 및 귀하의 사이트 섹션으로 소스?

http://www.example.com/?utm_campaign=mygreatsite.com&utm_medium=referral&utm_source=specialoffers

좋은 생각! 나는이 해결 방법에 대해 생각했지만 그것들이 나의 끝에서 이것을 구현하는 것에 대한 "규칙"인지 궁금했다. 일반적으로 이러한 검색어 매개 변수는 타사 웹 사이트에 의해 추가되어 캠페인 등을 추적 할 수 있습니다.이 방법이 어떤 방식 으로든 나쁜 관행으로 간주됩니까?
호두 까 기 인형
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.