문제

한 도메인에서 쿠키를 설정하고 다른 도메인에서 액세스하려고합니다. 이게 가능해?

내 앱에서 내가하는 일은 다음과 같습니다.

컨트롤러에서 테스트 조치는이 URL을 통해 액세스됩니다.

http://myapp.com/account/test

def test
  cookies[:foo] = {
    :value => 'something',
    :domain => 'myapp.heroku.com'
  }
end

동일한 컨트롤러에서 Test2 작업은이 URL을 통해 액세스됩니다.

http://myapp.heroku.com/account/test2

def test2 
  puts "foo=#{cookies[:foo]}"
end

그러나 쿠키의 가치 [: foo]는 항상 비어 있습니다. Heroku.com 도메인에서 쿠키에 액세스 할 수 있습니까? 나는 다음을 설정했다고 생각했다 : 도메인 옵션은 이것을 허용 할 것이라고 생각했다.

감사.

도움이 되었습니까?

해결책

: 도메인 옵션 (및 일반적으로 쿠키에서 도메인 설정)은 실제로 하위 도메인에서만 작동합니다. app1.mysite.com 및 app2.mysite.com의 경우 쿠키 도메인을 .mysite.com으로 설정하고 하위 도메인간에 공유 할 수 있습니다.

이것은 쿠키가 작동하도록 설계된 방식입니다. myapp.com 및 myapp.heroku.com은 하위 도메인이 아닌 별도의 도메인 이므로이 방법으로 도메인을 설정하려고 시도하는 것은 작동하지 않습니다.

진정한 크로스 도메인 쿠키를 달성하는 방법에는 몇 가지가 있지만 오히려 관여합니다.

다른 팁

다른 도메인에 대해서는이 작업을 수행 할 수 없지만 하위 도메인을 위해 수행 할 수 있습니다. 예를 들어 도메인에서 실행되는 앱 example.com 쿠키를 설정할 수 있습니다 subdomain.example.com 그러나 그렇지 않습니다 exampleapp.com.

다른 임의의 도메인을 위해 쿠키를 설정할 수 있다면 대규모 보안/개인 정보 보호 문제가있을 것입니다.

환경에서 다음을 수행하여 모든 도메인에 대해 동일한 쿠키를 설정할 수 있습니다.

 ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:session_domain => '.mydomain.com']

보다 여기 문서를 위해.

체크 아웃하고 싶을 수도 있습니다 http://coderack.org/users/ahamid/middlewares/142-session-injector

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top