XMLHttpRequest için Proxy Kullanımı

13 Haz

Günümüzde değişik web hizmetlerini(service) kullanıcılara açan internet uygulamaları arttıkça, haliyle bu sunulan hizmetleri alabilmek adına değişik yöntemler kullanılır. Örneğin sosyal ağların sunduğu servisler, hava durumu, haber veya blog servisleri tarafından sunulan bilgileri biz de alıp uygulamalarımızda kullanmak isteriz.

AJAX(Asynchronous Javascript and XML) tabanlı web uygulamaları yaygınlaştıkça, web sunucularına istek gönderip, sunucu tarafında yeniden oluşturulan HTML çıktılarını almak yerine var olan sayfaları hiç yenilemeden(refresh) sorgu gönderip cevabı mevcut sayfa üzerine dökme yoluna gidiliyor. İnternet tarayıcıları (web browser) üzerinden Javascript kodu ile sunuculara istek gönderip cevap almak mümkündür. Bu gibi istekleri(request) karşılamak üzere tarayıcılar tarafında bulunan XMLHttpRequest nesnesi devreye girmektedir.

XMLHttpRequest nesnesi ile uygulamamızın bulunduğu sunucu dışında bir sunucuya istek göndermek güvenlik açısından bazı kısıtlamalara takılmaktadır. Bu gibi sorunları aşmak için direk başka sunucuya (örneğin Yahoo servisine)istek göndermek yerine kendi sunucumuza bir proxy uygulaması oluşturup bu proxy üzerinden istekleri göndermek uygun olacaktır.

Neden Proxy Kullanılır?

Modern Web tarayıcıları, sunduğu geliştirici ve kullanıcı dostu eklentilerin yanı sıra güvenliği sağlamak açısından başarılıdırlar. XMLHttpRequest çağrıları içeren bağlantılarda web tarayıcılar bir güvenlik sınırlaması getirirler. Bu sınırlama ile bir script veya uygulamanın kendi geldiği sunucu haricinde bir sunucuya istek göndermesi engellenir. Aşağıdaki resimde web tarayıcı üzerinden, uygulamanın kendi web sunucusuna HTTP metodlarıyla(GET, POST, v.s) veya XMLHttpRequest ile istek göndermesinin mümkün olduğu gösterilmiştir.

XMLHttpRequest isteği
XMLHttpRequest isteği

Ancak yazdığınız bir script ile web tarayıcısı üzerinden başka bir sunucuya istek gönderecek olursanız (örneğin Yahoo web servislerine), tarayıcı aradaki bağlantıyı engeller. Aşağıdaki resimde bu durum gösterilmiştir.

XMLHttpRequest dış sunucu isteği
XMLHttpRequest dış sunucu isteği

Bu gibi durumlarda genellikle kullanılan çözüm, proxy kullanılmasıdır. Bir web servisine internet tarayıcısı üzerinden direk istek göndermek yerinde, kendi sunucunuzda bulunan bir proxy’ye isteği gönderirsiniz. Proxy, aldığı isteği ilgili web servisine göndererek aldığı cevabı internet tarayıcınızdaki client tabanlı uygulamanıza gönderir. Servis ile bağlantıyı kuran web sunucusu olduğundan internet tarayıcısı açısından artık bir sorun kalmamıştır.

XMLHttpRequest Proxy Kullanımı
XMLHttpRequest Proxy Kullanımı

Client tabanlı web uygulamaları olarak Javascript, Java Flex, Silverlight gibi uygulamaları düşünebilirsiniz. Bu tarz uygulamalar web tarayıcıları üzerinden çalışırlar. Web tarayıcılar üzerinden çalışan uygulamalardan Yahoo, Twitter gibi sitelere ait servislere ulaşmak için proxy kullanabilirsiniz.

Kaynak: http://developer.yahoo.com/javascript/howto-proxy.html