ASP objects             

          

Sunucu (Server) Nesneleri
Talep  Nesnesi   -  Request Objects

Web Server çok akıllı bir programdır; bir Web ziyaretçisi herhangi bir talepte bulunduğu, yani bir sayfanın gönderilmesini istediği anda, bu talebi, bir nesne halinde ele alır; kolleksiyonlar oluşturur. Bu kolleksiyonlar, HTTP protokolü ile iletişimin sonucu olarak ziyaretçinin Browser'ından ve Internet'e giriş noktası olan ISS'in bilgisayarından başlayan ve Web Server'dan derlenen bir dizi bilgidir. Bir anlamda, Request nesnesi, Web programımızın Girdi (Input) bölümünü oluşturur.

Request nesnesi kendi içinde dört ana nesne barındırır:

 

QueryString ve Form

Web ziyaretçisinin bilgisayarından kalkıp Server'a gelen herşey, QueryString kolleksiyonunu oluşturur. Bu ziyaretçinin Browser'ın URL adresi hanesine yazdığı bir basit HTML sayfası yolu ve adı olabilir; bir Form'un Gönder düğmesini tıkladığında gelen bilgiler olabilir. Bu bilgilerin şu özelliklerini kullanabiliriz:

Content_Length: Bir Form'dan gelen bilgilerin tümümün byte olarak boyutudur.

Remote_Host: Ziyaretçinin IP adresini verir; ancak Internet'e çevirmeli ağ ile bağlanan ziyaretçilerimiz her seferinde farklı bir IP bildirebilirler. Bu yüzden bu bilgiyi ziyaretçinin kimliği sayamayız.

Request_Method: Form'da kullandığımız GET veya POST metodunu bildirir. İki yöntemle gelen bilgi farklıdır. Form'un oluşturduğu bilgileri GET yöntemi ile alırsak bu, çevre değişkenlerinden QUERY_STRING değişkeninin içine yazılır. Başka bir ifade ile Form'daki bütün değişkenlerin adları ve bu değişkenin içerdiği değer yumak yapılır (bu yumağın niteliğine ve nasıl çözeceğimize geleceğiz!) ve Server'da QUERY_STRING değişkeninin değeri olarak yazılır. Form'un bilgilerini POST yoluyla alıyorsak bunlar Request nesnesinin Form kolleksiyonunun içinde Form'un değişken adları ve ziyaretçinin bu değişkenler için sağladığı değerler olarak ayrı ayrı yazılır. GET ile sınırlı, POST ile sınırsız bilgi alabiliriz.

Script_Name: O anda çalıştırılmakta olan ASP sayfasının adını verir.

 

ServerVariables (Server Değişkenleri)

Request nesnesinin bir diğer kolleksiyonu, bizim kendi Web Server'ımızın o anda çalışmakta olan ASP sayfası için oluşturduğu ortamın değişkenleridir. Bunların arasındaziyaretçinin Browser'ına ilişkin bilgiler de vardır. Önce þu kısa ASP sayfasını çalıştırarak kendi Server'ımızın şu andaki değişkenlerini görelim; sonra bunları ayrıntılı ele alalım  SerDeg.asp 

   <HTML>
<HEAD>
<TITLE>HTTP ServerDegişkenleri Kolleksiyonu</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY BGCOLOR=white>
<CENTER>
<H2>HTTP Server Değişkenleri Kolleksiyonu</H2>
</CENTER>
<TABLE BORDER=1>
<TR><TD><B>Değişkenin adı</B></TD> <TD><B>Değeri</B></TD></TR>

<% For Each key in Request.ServerVariables %>
<TR>
<TD><% = key %></TD>
<TD>
<%If Request.ServerVariables(key) = "" Then
Response.Write " " 
Else
Response.Write Request.ServerVariables(key)
End If
Response.Write "</TD>"%>
</TR>
<% Next %>
</TABLE>
<p>
Sizin Host'unuzun adı:<B> <%=Request.ServerVariables("HTTP_HOST")%></B>
</BODY>
</HTML>

 Bu sayfayı çalıştırdığımız zaman görüntülenecek tabloda, Bir HTTP Server'ın SerDeg.asp  sayfasını çalıştırdığı anda oluşturduğu ortama şekil veren bütün değişkenleri göreceksiniz. Bu değişkenleri programlama yoluyla değiştiremeyiz; sadece okuyup, yararlanabiliriz. HTTP Server Değişkenleri Kolleksiyonunun elemanları şöyle sıralanır:

  Değişkenin adı Değeri
  ALL_HTTP HTTP Header içinde yer alan bütün değişkenler ve değerleri. Header adlarının önünde "HTTP_" öneki vardır.
  ALL_RAW HTTP Header içinde yer alan bütün değişkenler ve değerleri. Header adları ve değerleri istemci Browser'ın verdiği şekilde gösterilir.
  APPL_MD_PATH Web Server'ın ISAPI.DLL dosyası için varsaydığı kök dizin
  APPL_PHYSICAL_PATH Web Server'ın varsaydığı kök dizinin gerçek yolu
  AUTH_PASSWORD Kullanıcı Web Server'a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanılan parola
  AUTH_TYPE Kullanıcı Web Server'a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanılan yetkilendirme yöntemi
  AUTH_USER Kullanıcı Web Server'a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanıcı adı
  CERT_COOKIE Kullanıcı siteye bağlanmak için yetkilendirme sertifikası kullanıyorsa kendisine verilen kimlik (ID)
  CERT_FLAGS Sertifikanın varlığını gösteren bit değeri
  CERT_ISSUER Sertifika varsa veren kurum
  CERT_KEYSIZE Secure Socket Layers kullanılıyorsa, bağlantı için anahtar değeri
  CERT_SECRETKEYSIZE Özel anahtar değeri
  CERT_SERIALNUMBER Sertifika seri no.
  CERT_SERVER_ISSUER Sertifikayı veren merci
  CERT_SERVER_SUBJECT Server Sertifikasının "konu" alanı değeri
  CERT_SUBJECT İstemci Sertifikasının konu alanı değeri
  CONTENT_LENGTH İstemcinin gönderdiği bilgi yumağının boyutu
  CONTENT_TYPE Ziyaretçiden gelen bilgilerin GET veya POST metoduna göre edindiği tür
  GATEWAY_INTERFACE Web Server'ın ziyaretçi ile etkileşim arayüzünün adı ve sürümü. Genellikle: CGI/1.1
  HTTPS Ziyaretçi ile bağlantı güvenli ise ON, değilse OFF
  HTTPS_KEYSIZE Secure Sockets Layer için bağlantı anahtar sayısı
  HTTPS_SECRETKEYSIZE Özel Server sertifikasının gizli anahtar sayısı
  HTTPS_SERVER_ISSUER Özel Server sertifikasının veren merci
  HTTPS_SERVER_SUBJECT Özel Server sertifikasının konusu
  INSTANCE_ID Web Server'ın aynı anda kaç kere çalışmakta olduğu
  INSTANCE_META_PATH Şu anda çalışmakta olan Web Server'ın Meta yolu
  LOCAL_ADDR İstemcinin IP numarası
  LOGON_USER İstemci Windows NT sisteminde ise oturum açma adı
  PATH_INFO Çalışmakta olan ASP'nin göreli yolu ve adı
  PATH_TRANSLATED Çalışmakta olan ASP'nin gerçek yolu ve adı
  QUERY_STRING İstemcinin gönderdiği bilgi kümesi
  REMOTE_ADDR İstemcinin Host'unun (ISS'inin) IP'si
  REMOTE_HOST İstemcinin Host'unun (ISS'inin) adı
  REMOTE_USER İstemcinin gerçek adı
  REQUEST_METHOD İstemciden bilgi isteme yöntemi (GET veya POST)
  SCRIPT_NAME Çalışmakta olan ASP'nin adı
  SERVER_NAME Sunucu'nun adı
  SERVER_PORT Sunucuya bağlantının geldiği TCP kapı numarası
  SERVER_PORT_SECURE TCP kapısı güvenli ise 1, değilse 0
  SERVER_PROTOCOL Server'ın çalıştırdığı HTTP'nin sürümü
  SERVER_SOFTWARE Server programının adı ve sürümü
  URL Şu anda geçerli URL
 

 

Cookie (Çerez)

Daha önce ne kadar çok olursa olsun tek-tek Web sayfalarından oluşan siteler yaptıysanız bile, Cookie (Çerez) ile ilginiz olmamış olabilir. Ya da sadece Internet ziyaretçisi olarak başkalarının size gönderdiiği Cookie'lere sinirlenmekle yetinmiş olabilirsiniz. Fakat şimdi ASP ile Web Programı oluşturmaya hazırlanan kişi olarak Cookie'lerle daha yakından ilgilenmeniz gerekiyor. Çünkü artık siz de başkalarına çerez göndereceksiniz!

Tabiî bunun için önce "Cookie neden gereklidir?" sorusunu yanıtlamak gerekir. HTTP ile yapılan iletişim, belirgin olmayan durum bağlantısına dayanır: yani ne istemci sunucunun, ne de sunucu istemcinin o anda hatta (on-line) olduğunu bilmek zorunda değildir; birbirlerinden istedikleri ve gönderdikleri şeyleri karşı tarafından almaya hazır olduğunu bilmeden gönderirler. Oysa sözgelimi elektronik alışveriş gibi ziyaretçinin bir yerlere birşeyler kaydettiği, geçici değişkenler oluşturduğu durumlarda sitemizde kimin ne yaptığıını bilmek zorundayız. Ziyeretçinin bir sayfada yaptığı tercihler diğer sayfalarda ona sunacağımız içeriği etkileyebilir, belirleyebilir. Oysa aynı ziyaretçi bir sayfadan diğerine geçerken Server ile ilişkisini kaybedebilir. Bunun için ziyaretçinin Internet'ten kopması gerekmez; sadece TCP/IP protokolü gereği bizimle bağlantısı kesilebilir. Bunu ziyaretçi farketmeyebilir; ama Server etmek zorundadır. Heryeni ilişkiye yeni bir "application" (uygulama programı) başlatamayız; ziyaretçinin bir önceki sayfada yaptığı tercihlerin devam etmesi gerekir. Bu devamlılığı ziyaretçiyi işaretleyerek yaparız; bu işareti de Cookie sağlar.

ASP tekniğiyle tasarladığımız sitede, ziyaretçilerimize Cookie göndermek zorunluktur diyebiliriz. ASP açısından Cookie'ler bir nesne oluştururlar. Aslında, Cookie'ler ASP için iki ayrı grup Cookie nesnesi oluştururlar: verilenler, ve hakkında bilgi alınan varolan Cookie'ler. Birinci grup Request (talep) nesneleri, ikinci grup ise Response (karşılık) neslereni içinde ele alınabilir. Cookie konusunun devamını Response nesnelerine değindiğimiz yere bırakalım.

 

 

Sertifika Nesnesi

Sertifika, HTTP bağlantısında "Ben filancayım!" diyen istemcinin, gerçekten filanca olup olmadığını gösterir. Bir yazılımdan ibaret olan sertifikaları yetkili bir kurum veya şirket verir; bir seri numarası olur. Şifreleme teknikleri gelişmiş olduğu için taklit edilmesi zordur. Sertifika uygulaması için Web Server'ın Secure Socket Layers denen güvenli HTTP protokolünü kullanması gerekir. Bu durumda Server'ın URL'i, http:// diye değil https:// diye yazılır.

ASP açısından sertifika ile ilgili her türlü bilgi ClientCertificate kolleksiyonunda durur. Sözgelimi, bir ziyaretçinin gerçekten sitenize girmeye yetkili olup olmadığını anlamak için:

  <%SertifikaNo = Request.ClientCertificate(SerialNumber) %>

gibi bir kodla istemcinin Sertifika seri numarasını SertifikaNo değişkenine atayabilir ve daha sonra bu değişkenin değerini elinizdeki bir liste ile karşılaştırabilirsiniz.


Server objects - sunucu nesneleri    
konu 23 : Response objects - cookies