Forum: Projeler Rhodeus Script RSS
Vibe Cookie Yazma
Avatar
zekeriyadurmus #1
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Vibe Cookie Yazma
Şu anda Ankara Bilkent Oteldeyim ve yarın Congresium Ankara'da projenin sunumunu yapıyor olacağım. Bir yandan da 2.0 sürümünü yazmaya devam ediyorum. Çerezleri req.cookies den okuyabiliyorum ama cookie yazamıyorum bir türlü ve işin kötü tarafı vibed.org adresinde bununla ilgili hiç bir şey bulamadım :(

auto c = new Cookie();
c.value="değeri";
res.cookies["çerez"] = c;

denedim ama çalışmadı.

Zekeriya
Bilgi meraktan gelir...
Avatar
Salih Dinçer #2
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bence JavaScript kullanmalısın. Çünkü bildiğim kadarıyla bu client-side bir uygulama. Aynı şekilde yine JS ile okuyup GET/POST edebilirsin.
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
zekeriyadurmus #3
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yok RhS için bu. Yani kendi içerisinde setCookie işlevi çağırılarak çerez oluşturulacak.
Bilgi meraktan gelir...
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Cookie.setValue olabilir mi?

  http://vibed.org/api/vibe.http.common/Cookie.setValue

Ali
Avatar
zekeriyadurmus #5
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Maalesef Ali hocam bu değil

Zekeriya
Bilgi meraktan gelir...
Avatar
Salih Dinçer #6
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Lütfen ısrarımı mazur görün...:)

Bu konuda biraz cahil kalmış olabilirim. Çünkü uzun süredir web teknolojilerini takip etmiyorum. Şimdi, server-side çalışan bir RhS uygulaması, çerez uygulamasını tetiklemesi için ne yapması gerekir? Yani yorumlayıcı, kendi kendine çalışırken tarayıcıya (browser) "ben istemci tarafına küçük bir bilgi yazmak istiyorum" diyebilir mi? Bunu diyebilmesi için ne gerekir?

Sanırım bu sorunun cevabı bir JS kodu üretmesi olacaktır. Tarayıcının kendi JS yorumlayıcısı bunu çalıştıracak ve istemci tarafındaki dosyaları yazacaktır. Aynı şekilde okuma yapabileceğinden, basit bir form-method ile biz bunu yorumlayıcıya bildirebiliriz. Buraya kadar dikkatimden kaçan bir husus var mı?

Cookie setValue(
  string value
) deprecated;

Ayrıca dikkat ettiniz mi; "deprecated" yazıyor!

Kolay gelsin...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
zekeriyadurmus #7
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Hocam js ile elbette yapılabilir ama böyle olmasının bir anlamı olmaz. Önemli olan rhs içerisinden direk cookie yazılabilmesi.

orada cookie.value = "value" şeklinde bir ifade kullanılıyor bu setValue yerine ama denedim olmadı bir türlü

Zekeriya
Bilgi meraktan gelir...
Avatar
Salih Dinçer #8
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Peki bir soru...

RhS yani, D dahilinde, elimizde öyle olanaklar olsun ki, işletim sistemi kesmelerini (soft interrupts) bile çalıştırıp arka planda görevler (cron jobs) alabildiğimiz farz edelim. Ha keza güvenlik kurallarını ihlal etmediğimiz müddetçe, yapabileceğimiz çok şey var...:)

Peki ya, uzaktaki istemciye dosya yazma; anlattığım haricinde başka nasıl olabilir?

Aklıma, TCP/IP başlığı geliyor. Belki burada öyle bir katman var ki bize bunu sunucu tarafından yapılabilir kılıyor. Ama aklıma da TCP paketlerini işletim sisteminin çözdüğü, yani ilk önce onun elinden geçtiği geliyor ki ben başka çözümünü bilmiyorum...

DOM ile olabilir mi?
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #9
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Salih Dinçer:
uzaktaki istemciye dosya yazma; anlattığım haricinde başka nasıl olabilir?

Ben cookie konusunda oldukça bilgisizmişim. Şimdi biraz araştırınca yalnızca HttpOnly çeşidini kurgulamış olduğumu farkettim.  Tabii javascript vs. tarafından yazılan cookie'ler de varmış. :)

HttpOnly kavramını HTTP protokolü tanımladığı için sunucu "şu cookie'yi yaz" diyor ve tarayıcı da normalde yazıyor. Zekeriya, vibe.d'de Cookie.setHttpOnly ve Cookie.isHttpOnly işlevleri var. (Elimdeki sürümde öyle; belki bunların isimlerini de değiştirmişlerdir.) Acaba senin sorununun çözümü setHttpOnly() mi?

Ali
Avatar
Salih Dinçer #10
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
HttpOnly kavramını HTTP protokolü tanımladığı için sunucu "şu cookie'yi yaz" diyor ve tarayıcı da normalde yazıyor.
Bu cümleden şunu anlamalıyız:

TCP başlığındaki 7. katmandan (en sonuncu: application layer) bunu yapıyor. Şu belgeyi inceliyorum:

https://tools.ietf.org/html/rfc1123

Bakalım nasıl oluyor...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
Salih Dinçer #11
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Belgede cookie'ye rastlayamadım. Telnet'den e-posta ile alakalı (SMTP falan) her şey tanımlamış. Ancak anahtar sözcük "Vary" (ve bir de X-Vary-Options var) ama ne hikmetse bu belgede tek bir yerde geçiyor...:(

Başka kaynaklarda şöyle bir tartışmaya denk geldim:

http://stackoverflow.com/questions/1975416/trying-to-under…

Ancak şu var: Böyle bir şey mümkün olsa bile bir sınır olmalı! Yani JS kullanılmasının bir sebebi olmalı. Gerçi aynı yolda okuma yapılamayacağını da düşünüyorum. Yani küçük bir veri (trackId) tamam ama bir kaç KB'.Iık veri header ile gider mi açıkcası çekincem var. Gerçi tarayıcıların 4KB.'lık sınırları da var ya, o ayrı...:)

ARAŞTIRMA SONUCU:
Araştırmaya bir süre daha devam ettim de bunlar sadece ayarlardan ibaret olduğu neticesine vardım. Yani bir çerez verisi yazmak istiyorsanız; header'daki "Content-Type: text/html;" olacak ve başlığın devamındaki belgede bunu HTML olarak vereceksiniz. Hepsi bu ve sonrasında JS'yi kullanarak DOM nesneleriyle veriyi yazar veya okuruz.

Sizce başka bir şey var mı?

YENİ BİR ŞEY: https://en.wikipedia.org/wiki/HTTP_cookie#Implementation
Meğer Set-Cookie diye bir header argument'i varmış:
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value
Set-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT

Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Bu mesaj 2 defa değişti; son değiştiren: Salih Dinçer; zaman: 2013-05-21, 11:21.
Değişiklik nedeni: Araştırma sonucu eklendi...
acehreli (Moderatör) #12
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Salih Dinçer:
Belgede cookie'ye rastlayamadım.

Zaten HTTP protokolü ile ilgili bir belge değilmiş.

Yani küçük bir veri (trackId) tamam ama bir kaç KB'.Iık veri header ile gider mi açıkcası çekincem var.

Çerez sınırı 255 baytmış. Ama dediğin gibi, tanımlayıcı nitelikteki herhangi bir kod (id) yeter. Gerisi sunucu tarafında saklanır.

Ali
Avatar
zekeriyadurmus #13
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Salih hocam header göndererek elbette yapılabilir ama ben direk olarak cookie okur gibi cookie yazmak istiyorum :)

Bu arada jüri sunumumu bugün gerçekleştirdim, cuma günü sonuçlar açıklanacak inşallah :)

Zekeriya
Bilgi meraktan gelir...
Avatar
Salih Dinçer #14
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Şimdi adım adım gidelim...

Öncelikle Telnet veya başka bir yazılım ile RhS'nin döndürdüğü header'ı bir görebilir miyiz? Belki Vibe.d'nin bahsedilen sınıfları kurulunca ilgili şeyler ekleniyordur. Eğer öyleyse, bir de 'Vary argument'i içinde Cookie ayarı yerleştirilmiş mi ondan emin olalım.
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
zekeriyadurmus #15
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Nasıl yapılacağı çözdüm...

writeBody işlemi yapmadan önce aşağıdaki işlemler uygulanılırsa cookie yazılabilir.

auto cookie = res.setCookie("cookie adı", "değeri", "/" /*konum*/); //konum yeri boş bırakılabilir.
cookie.secure = false; //https istekleri için de dahil olup olmaması. 

Zekeriya
Bilgi meraktan gelir...
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-21, 09:06:07 (UTC -08:00)