2017-02-01 1 views
3

그래서 나는 개인 CDN은 웹 응용 프로그램의 일부 파일을 보유하고 CloudFront를 사용 (서명 된 URL & 쿠키에 의해, S3를 통해 데이터에 액세스 할 수 없습니다)이있다. 내 사이트의 페이지의브라우저에서 CloudFront signed 쿠키를 사용하는 방법은 무엇입니까?

하나는 소스가 CDN에에 살고 이미지를 표시합니다. 내가 서버에 서명 URL을 생성 할 때 난 그냥 클라이언트에 전달하고 소스로 설정할 수 있습니다 지금

<img src="cdn.example.com/images/file.jpg"> 

... 쉬운

하지만 서명 쿠키를 사용하여 같은 일을하려고 할 때 나는이 문제에 실행 : 서명 된 쿠키의 서버 측을 생성 한 후

  1. , 나는 res.cookie를 사용하여 설정하지만 클라이언트 측에서 응답을 찾는 방법을 모르겠어요. 실제로 (각도/자바 스크립트) 클라이언트 측 쿠키, 어떻게 "설정"하기를 얻기가 발생할 경우
  2. 은 브라우저 위가 액세스 할 수 있습니다 HTML을 언급의 이미지를 잡기 위해 시도 할 수 있도록 할 때? 내가 노드를 사용하고

, 고속 및 쿠키 파서. 나는이 물건에 상당히 익숙해서 어떤 도움도 받으실 수 있습니다.

답변

0

쿠키의 도메인이 클라우드 프론트 CDN의 동일하거나 하위 도메인인지 확인 했습니까?

쿠키

는이 관련 도메인에서 오는 경우에만 CloudFront를 분배에 대한 요청에 포함됩니다. 예를 들어, 쿠키 도메인이 "localhost"이지만 서명 된 쿠키 도메인이 "cdn.example.com"인 "localhost"를 사용하여 로컬로 테스트하는 경우.

는 도메인이 올바른지 확인하려면

  1. 는, 예를 들어 CloudFront를 배포에 대한 CNAME을 설정 http://cnd.example.com

  2. 서명 된 쿠키가 올바른 도메인을 갖고 있는지 확인하십시오. 도메인 : '*. example.com'은 도메인과 일치합니다.

여기에 좋은 기사 있습니다 :

const options = { 
    keypairId: YOUR_ACCESS_ID, 
    privateKeyPath: PATH_TO_PEM_FILE 
}; 

const signedCookies = cf.getSignedCookies("http://cdn.example.com/*", options); 

for (const cookieId in signedCookies) { 
    res.cookie(cookieId, signedCookies[cookieId], {domain: ".example.com"}); 
} 
: 당신이 뭔가를 할 것이라고이 모듈을 사용 https://github.com/jasonsims/aws-cloudfront-sign

: https://www.spacevatican.org/2015/5/1/using-cloudfront-signed-cookies/

좋은 노드 모듈 서명 쿠키를 만들기위한도있다는

도메인을 설정하는 방법에 유의하십시오. 명시 적으로 설정하지 않으면 요청을 한 설정이 기본값으로 설정됩니다. 이는 원하는 설정과 다를 수 있습니다.

마지막 것은, 로컬에서 테스트하기 위해, 내 홈 네트워크에서 포트 포워딩을 설정하고 내 집 IP 예를 가리 키도록 GoDaddy와의 CNAME을 생성 "test.example.com". 그런 다음 "http://localhost"대신 "http://test.example.com"을 사용했습니다. 이렇게하면 "test.example.com"하위 도메인이있는 쿠키가 만들어집니다. 마지막으로, GoDaddy에 "cdn.example.com"이라는 CNAME을 추가하여 CloudFront URL로 지정했습니다.서명 된 쿠키 인 ".example.com"에 와일드 카드 도메인을 사용했으며 동일한 도메인 "example.com"에 서명 된 쿠키가 있기 때문에 CloudFront로 전달되고 붐을 일으켰습니다.

관련 문제