Asp Ana Objeler

Dizinin 2 bölümünde : ana objeler, request, response, cookie, form, querystring, server variables konularından bahsediliyor.

Ana Objeler

Active Server Pages ‘in beraberinde gelen bazı server ve uygulama geliştirme objeleri vardır. Bu objeler developerları clienttan gelen requestleri, application durumunun yonetimi,cookilerin kullanılması, istemciye verilcek cevabın duzenlenmesi gibi işlerin detayları için kod yazma  zahmetinden kurtatır. Bu ana objeler şunlardır:

1-Request and Response:request objesi HTTP istemi ile scripte gonderilen tum bilgilere erişimi sağlar. Bu bilgiler cookieleri,formları,URL querylerini ve http headerlarını kapsar.

Request objesine ait kolleksiyonlar:

1-clientcertificate 2-cookie 3-form 4-querystring 5-servervaribles

eğer request.form veya request.querystring gibi ifadeler yerine dogrudan request(variable) denilirse web server kolleksiyonları şu sırada arar

  1. querystring
  2. form
  3. cookies
  4. clientcertificate
  5. servervariables

Bunun için çoğunlukla

Request.(AUTH_USER) yerine  Request.ServerVariables(AUTH_USER) kullanılır.

1-ClientCertificate :HTTP requesti icinde gonderilen X.509 standartındaki sertifikalara ait bilgilerdir.Eğer web browser SSL3.0/PCT1 Protocolu kullanıyorsa yani secure bir iletişim yapıyorsa web browsera sertifika yollayabilir.Eğer bir Sertifika gonderilmemişse ClientCertificate kolleksiyonundan EMPTY degeri doner.

Syntax

Request.ClientCertificate( Key[SubField] )

Bu kolleksiyona ait Keyler ise şunlardır:

Certificate ASN.1 formatındaki tum sertifika içeriğinin binary stream’ini içeren bir string
Flags ek sertifika verileri sağlayan flaglerden oluşur.

ceCertPresent—A client certificate is present.

ceUnrecognizedIssuer—Bu zincirdeki son sertifikasyon bilinmyen bir user’a ait

Not:  flagleri kullanbilmeniz için Asp dosyanıza client sertifikasını include etmelisiniz.VBScript kullanıyorsanız cervbs.inc dosyasını Jscript kullnıyorsanız cerjavas.inc dosyasını include etmelisiniz.Bu dosyalar \Inetpub\ASPSamp\Samples klasorune yuklenmiştir.

Issuer sertifikayı yayınlayan hakkındaki bilgileri kapsayan bazı subfield değerlerinden oluşan bir string dir.Eğer Sub fileld olmadan  bu değer belirtilmişse ClientCertificate kolleksiyonu virgul ile ayrılmış SubFieldlar gonderir.Örneğin ,C=US, O=Verisign, vb…
SerialNumber Client sertifikası serial numerını ASCII tipinde ve tirelerle ayrılmış hxadecimal ifadeleri kapsayan bir stringdir.Örneğin, 04-67-F3-02.
Subject Bazı subfiled değerlerini tutan stringdir.Subfield değeri sertifikanın konusu hakkındaki bilgileri kapsar.Eğer bu değer subfieldsız belirtilmişse ClientCertificate kolleksiyonu virgul ile ayrılmış SubFieldlar gonderir. Örneğin, C=US, O=Msft, vb..
ValidFrom sertifikanın hangi tarihten itibaren geçerli oldugunu bildiren tarih.Bu tarih VBScript formatındır ve uluslararası ayarlar ile değişir. Örneğin, U.S.’de, 9/26/96 11:59:59 PM.
ValidUntil sertifikanın hangi tarihe kadar  geçerli oldugunu bildirir.

SubField

C şehir/kasaba adı
CN Skullanıcı adı (sadece Subject keyi ile kullnaılır.)
GN verilen ad
I ilk oncekileri belirtir
L Yöre
O şirket yada organizasyon adı
OU organizasyonel birimler
S Eyalet
T organizayon adı veya kişinin ünvanı

Clientcertificate ile ilgili bazı ornek ASP kodları

<%  For Each strKey in Request.ClientCertificate    Response.Write strkey & ” = ” & Request.ClientCertificate(strkey) & “<BR>”)  Next%>

 

<%  If Len(Request.ClientCertificate(“Subject”)) = 0    Response.Write(“No client certificate was presented”)  End if%>

 

<%= Request.ClientCertificate(“IssuerCN”) %>

 

<%   If (Request.ClientCertificate(“Subject”)=”Msft”)    Response.Write(“Good Choice!”)  End if%>

 

<%= Request.ClientCertificate(“ValidUntil”) %>

 

<!–#include file=”cervbs.inc” –><%  If Request.ClientCertificate(“Flags”) and ceUnrecognizedIssuer then    Response.Write “Unrecognized issuer”  End If%>

2-COOKIE

Syntax

Request.Cookies(cookie)[(key)|.attribute]

Örnekler

<%    For Each strKey In Request.Cookies      Response.Write strKey & ” = ” & Request.Cookies(strKey) & “<BR>”      If Request.Cookies(strKey).HasKeys Then        For Each strSubKey In Request.Cookies(strKey)          Response.Write “->” & strKey & “(” & strSubKey & “) = ” & _            Request.Cookies(strKey)(strSubKey) & “<BR>”        Next      End If    Next%>

 

<%= Request.Cookies(“myCookie”) %>

3-FORM

HTTP requestinde POST  ile  gonderilen  form verisi bilgilerini alır.

Syntax

Request.Form(element)[(index)|.Count]

Parametreler

element :form elemanının adı

index

bir parametrenin birden çok değerlerinden birine erişmenizi sağlayan opsiyonel bir değer Request.Form(parameter).Count. arasında değişen integer değerleri olabilir.

100 Kb dan buyuk veriler POST edilirken Request.form kullanılmaz bunun yerine request.binaryread kullanılır.

Örnekler

<%  For i = 1 To Request.Form(“FavoriteFlavor”).Count    Response.Write Request.Form(“FavoriteFlavor”)(i) & “<BR>”  Next%>

4-QUERYSTRING

HTTP içerisindeki query string dediğimiz link yaninda verilen ve ?(soru işareti) ile ayrilarak yazilan ifadelerdir.

Basit bir örnek verecek olursak

<a href=”queryornek.asp?msg=querystring_metodu”>querystring ornegi</a>

Syntax

Request.QueryString(variable)[(index)|.Count]

Parametreler

variable

http içersinde gonderilen query string değişkeninin adı

index

değişkenin bir veya daha fazla değerini alabilmenizi sağlayan opsiyonel bir parametredir. 1 ile Request.QueryString(variable).Count arasında değişen bir integer değeri alabilir.

Request.querystring(parametre) QUERY_STRING içinde bulunan bütün değişenleri tutan bir dizidir. Bu dizinin istediğiniz kaç elemanı oldugunu bulmak için Request.QueryString(parameter) .Count  kullanılır.Eğer bir değişken gönderilmemişse bu değer 0 değerini alır.

Örnek

http://localhost/asp/names.asp?Q=Fred&Q=Sally

—NAMES.ASP—<%  For Each item In Request.QueryString(“Q”)    Response.Write Request.QueryString(“Q”)(item) & “<BR>”  Next%>

Yada

<%  For i = 1 To Request.QueryString(“Q”).Count       Response.Write Request.QueryString(“Q”)(i) & “<BR>”  Next%>

Yazildiğinda ekran ciktisi su şekilde olacaktir.

5-Server Variables:

istemci tarafın tarayıcısı tarafından yollanan bir http başlık bilgisi  bu kolleksiyonla kullanılabilir.

Syntax

Request.ServerVariables (server değişkenleri)

Server değişkenleri aşağıda verilmiştir:

ALL_HTTP :client tarafından gonderilen bütün HTTP başlıkları

ALL_RAW :tum HTTP değerlerini alır.ALL_HTTP ile arasındaki fark ALL_HTTP servera gelmeden once  HTTP_ prefix e gelir.Burada başlık adı büyük harfe çevrilir.ALL_RAW da ise datalar buraya gelmediği için client taraftan gonderildigi  gibi görünürler..

APPL_MD_PATH  :ISAPI.DLL uygulamalarında kullanılmak uzere metabase’in path i

APPL_PHYSICAL_PATH : IIS  APPL_MD_PATH ‘i fiziksel path e çevirmiş halidir.

AUTH_PASSWORD:  client’ın authentication dialogunda belirttiği değerdir. Basic authentication kullanıldığı zaman geçerlidir

AUTH_TYPE :korumalı bir scripte erişmek isteyen userları değerlendirmak için serverin kullandığı  authentication metodudur.

AUTH_USER :doğrulanmış ancak işlenmemiş kullanıcı adı.

CERT_COOKIE :client sertifika’e ait Unique ID

CERT_FLAGS  :client sertifika sı varsa 1 değeri ni alır yoksa 0 değerini  alır.

 

 

CERT_ISSUER :client sertifika yayınlayıcısına ait bilgiler(O=MS, OU=IAS, CN=user name, C=USA).

CERT_KEYSIZE :SSL bağlantısının kaç bit üzerinden yapılığını belirtir.

CERT_SECRETKEYSIZE : server certificate private key’indeki bit sayısı. 1024 gibi

CERT_SERIALNUMBER:client sertifika ‘sının seri numarası

CERT_SERVER_ISSUER :server sertifika’sının yayınlayıcısı

CERT_SERVER_SUBJECT : server sertifika sının konusu

CERT_SUBJECT :client sertifika sının konusu

CONTENT_LENGTH:client taraftan gelen  toplam bilginin uzunluğu

CONTENT_TYPE :client tan gelen verilerin gonderiliş şekli örneğin GEt,POST veya PUT gibi

GATEWAY_INTERFACE:serverin kullandığı CGI sartnamesi. CGI/revision formatındadır

HTTP_<HeaderName> :HeaderName de saklanan başlık değeri.Başlık oluşturulurken kullanılan _(alt çizgi) server tarafından -(tire) olarak algılanır.

 

HTTP_ACCEPT :Accept başlığı

HTTP_ACCEPT_LANGUAGE: contenti yani clienttan gelen veriyi gösterebilmek için kullanılan dili ifade eden string bir değer

HTTP_USER_AGENT :istemde bulunan browserı belirten bir string değerdir.

HTTP_COOKIE :istemle birlikte gelen bir cookie stringi.

HTTP_REFERER :bir yonlendirme olduğu zaman esas isteme ait url yi tutan bir string  değeri

HTTPS :ON ise SSL aglantısı uzerinden istemler gerçekleşiyor dur OFF ise non-secure bir iletişim yapılıyor demektir.

HTTPS_KEYSIZE :SSL bağlantısının kaç bit üzerinden yapıldığını belirtir.

HTTPS_SECRETKEYSIZE: server certificate private key deki bit sayısı

HTTPS_SERVER_ISSUER :server sertifika’sının yayınlayıcısı

HTTPS_SERVER_SUBJECT :server sertifika sının konusu

INSTANCE_ID :IIS icin kullanılan bir ID

INSTANCE_META_PATH:istemden sorumlu ISS icin metabase path’i

LOCAL_ADDR :istemi cevaplandıracak serverin adresi.

LOGON_USER :userin hangi Windows accountunu kullandığını belirtir.

PATH_INFO :PATH_INFO ve Virtual pathi kullanarak scriptlere erişebilirsiniz.Bu bilgi bir URL ile  gelirse CGI script ine gonderilmeden once server tarafından desifre edilir.

PATH_TRANSLATED : PATH_INFO nun pathi alıp virtualdan fiziksel yola cevirilme işlemlerinin yapılmış hali olan dir..

QUERY_STRING :HTTP isteminde ? den sonra gelen değişkendir.

REMOTE_ADDR :istemi yapan makinanın  adresi

REMOTE_HOST :istemi yapan host makina

REMOTE_USER :istemi yapan makinaya login olmuş kullanıcının accountundaki username

REQUEST_METHOD: istem yapılırken kullanılan metod.  GET, HEAD, POST gibi.

SCRIPT_NAME :calışan scriptin virtual pathi

SERVER_NAME :The serverin  host name, DNS alias veya IP address

SERVER_PORT :istemin yapıldığı port numarası

SERVER_PORT_SECURE :Secure bağlantı varsa 1 yoksa 0  değerini alır

SERVER_PROTOCOL :The name and revision of the request information protocol. The format is protocol/revision.

SERVER_SOFTWARE: istemlere cevapveren ve gatewayin uzerinde bulunduğu serverin adı ve kullandıgı sunucu yazılımı.name/version formatındadır.

URL  :URL adresi