10 Şubat 2018 Cumartesi

Apache üzerinden cors'u enable etme işlemi - Farklı originlerden erişimi açma

Merhaba, bu yazımda sizlere apache server üzerinden CORS'u nasıl enable edeceğinizi paylaşacağım. Eğer bir web yada uygulama sunucunuz varsa ve bu sunucuya http(GET,POST..vs) istekleri gönderiyorsanız aşağıdaki gibi bir hata mesajıyla karşılaşabilirsiniz. Çünkü sizin erişmek  isteğiniz sunucuya gitmeden arka planda önce erişim doğrulaması yapılmaktadır. Eğer erişimde problem varsa zaten istek sunucuya gitmemektedir.

Hata mesajı :
XMLHttpRequest cannot load <URL>. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access 


İstek gönderdiğiniz sunucu sadece localhost'tan gelecek isteklere yanıt verecek şekilde ayarlandığı(varsayılan olarak) için böyle bir hata mesajı görebilirsiniz. Bu yazıda dışarıdan gelen isteklere yanıt vermesi için  apache tarafında yapılması gereken configurasyonundan bahsedeceğim ancak diğer sunucular da aynı ayarları yapmanıza olanak sağlar.

öncelikle apache'yi kurduğunuz dizine gidin 
cd /etc/apache2/sites-enabled 

Apache configurasyon dosyasını düzenlemek için açın  
sudo vi httpd.conf 

Apache cors'u enable etme işlemi için  aşağıdaki satırı Directory tag lerinin arasına ekleyin 
<Directory /var/www>
  Header set Access-Control-Allow-Origin "*"
</Directory> 

Header set Access-Control-Allow-Origin "*" satırının anlamı tüm istekleri yanıtladır. Yani origine bakmaksızın istek nereden yapılırsa yapılsın sonuç dönecektir.
Eğer elinizdeki güvenlik gerektiren bir veri ise buraya yıldız(*) koymak yerine sadece izinli host'ları eklemeniz gerekmektedir. 
<Directory /var/www>
 Header set Access-Control-Allow-Origin "https://s.codepen.io"
</Directory>

Apache header'ı aktif edin 
$    sudo a2enmod headers 

Değişiklikleri uygulamak için apache yi restart edin 
 $ sudo service apache2 restart

Bu işlemlerden sonra apache sunucunuz localhost dışındaki yerlerden yapılacak HTTP isteklerine yanıt dönecektir.

Hiç yorum yok:

Yorum Gönderme