2017-12-05 169 views
8

Kullanıcı kimliğine yönelik tanımlama bilgilerinin kullanıldığı bir proje ile çalışmak.Tarayıcı sonraki istekte çerez göndermiyor

HTTP/1.1 200 OK 
Connection: keep-alive 
Keep-Alive: 60 
Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, x-forwarded-for 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, PATCH, GET 
Content-Length: 0 
Content-Type: text/plain; charset=utf-8 
Set-Cookie: id=random_id_123_123; expires=Wed, 06-Dec-2017 10:57:36 GMT; Domain=.local.com; Path=/ 
:

curl 'http://127.0.0.1:8000/api/v1.0/tracking' -X OPTIONS -H 'Access-Control-Request-Method: POST' -H 'Origin: http://local.com:8080' -H 'Access-Control-Request-Headers: content-type,x-forwarded-for' --compressed 

tepki başlık aşağıdaki gibidir: kullanıcı geldiğinde

, aşağıda benziyor (localhost çalışan) hizmet ve cevap başlığında ile çerez gönderme hizmeti çağrıları

curl 'http://127.0.0.1:8000/api/v1.0/tracking?event=video_added&user_id=123123123' -H 'Origin: http://local.com:8080' -H 'Accept: */*' -H 'Referer: http://local.com:8080/' -H 'Connection: keep-alive' --compressed 
:

Ve ardından belirli bir kullanıcı işlemi sonrası, uygulama aşağıdaki API isteği gönderiyor Ben ikinci isteği için istek başlığı olacağını cevap başlığında olarak ilk isteği ile alınacak çerez (random_id_123_123) bekliyordum

GET api/v1.0/tracking?event=video_added&user_id=123123123 HTTP/1.1 
Host: 127.0.0.1:8000 
Connection: keep-alive 
Accept: */* 
Origin: http://local.com:8080 
User-Agent: My user agent 
Referer: http://local.com:8080/ 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en-US,en;q=0.9 

: Aşağıdaki gibi

yukarıdaki istek için istek başlığı arar.

Web sitesi şu adresten çalışıyor: http://local.com:8080 (aslında yerel makinede çalışıyor ve 127.0.0.1 local.com işaretli vhost'um yapılandırması) ve bunun python SimpleHTTPServer tarafından sunulması.

Tanımlama bilgisi ayarlayan arka uç hizmeti, yerel ana bilgisayarda 8000 numaralı bağlantı noktasında da çalışıyor. Uygulama sırasında bir şey kaçırmış gibi görünüyor. Bu da ne?

Düzenleme: İşte code.

+0

gerçekten zor bize herhangi bir kod yayınlamak yoksa * anlatmak * –

+0

için olurdu @MatiasCicero Kod bağlantısını ekledim. –

cevap

5

Sorununuz, tanımlama bilgilerinin yalnızca etki alanına bağlı olarak gönderilmesidir. Kodunuz url 127.0.0.1:8000 olduğunu ve çerezleri geçirilecek istiyorsanız local.com:8000 olmalıdır

var settings = { 
    "crossDomain": true, 
    "url": "http://127.0.0.1:8000/api/v1.0/tracking?event=video_added&tracking_id=123123123", 
    "method": "GET", 

} 

sahiptir.

+0

Soruyu düzenlediniz. Çerezi ayarlayan hizmet 127.0.0.1:8000 tarihinde çalışıyor ve API’yi arayan web sitesi 127.0.0.1:8080’de çalışıyor. –

+0

Bu konuya https://stackoverflow.com/questions/1612177/are-http-cookies-port-specific adresini bakın. Tarayıcıda "local.com: 8080" olarak tararsanız, api, "local.com: 8000" ifadesini de kullanmalıdır, çünkü "local.com" 127.0.0 değerine işaret ediyorsa bile.1 ', onlar çerez paylaşımı –

+0

söz konusu olduğunda aynı değildir Ayrıca isterseniz 'response.cookies [" id "] [" etki alanı "] =" .local.com "' kaldırabilirsiniz ve ayrıca size yardımcı olmalıdır . –

1

Son kez kontrol ettim, curl varsayılan olarak çerezleri etkinleştirmedi.

  • /cookiejar çerezleri okumak için/parametre -b/yolu kullanın:

    böylece gerekir yapmak için.
  • Çerezleri yazmak için -c/path/to/cookiejar parametresini kullanın.

Yani istekler haline gelmelidir:

curl -c cookiejar 'http://127.0.0.1:8000/api/v1.0/tracking' \ 
-X OPTIONS -H 'Access-Control-Request-Method: POST' \ 
-H 'Origin: http://local.com:8080' \ 
-H 'Access-Control-Request-Headers: content-type,x-forwarded-for' \ 
--compressed 

Ve:

curl -b cookiejar 'http://127.0.0.1:8000/api/v1.0/tracking?event=video_added&user_id=123123123' \ 
-H 'Origin: http://local.com:8080' \ 
-H 'Accept: */*' \ 
-H 'Referer: http://local.com:8080/' \ 
-H 'Connection: keep-alive' --compressed