{"id":10788,"date":"2025-10-08T12:25:15","date_gmt":"2025-10-08T11:25:15","guid":{"rendered":"https:\/\/www.hostragons.com\/?p=10788"},"modified":"2025-07-26T16:36:18","modified_gmt":"2025-07-26T15:36:18","slug":"cross-origin-resource-sharing-cors-ve-web-guvenligi","status":"publish","type":"post","link":"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/","title":{"rendered":"\u0c15\u0c4d\u0c30\u0c3e\u0c38\u0c4d-\u0c06\u0c30\u0c3f\u0c1c\u0c3f\u0c28\u0c4d \u0c30\u0c3f\u0c38\u0c4b\u0c30\u0c4d\u0c38\u0c4d \u0c37\u0c47\u0c30\u0c3f\u0c02\u0c17\u0c4d (CORS) \u0c2e\u0c30\u0c3f\u0c2f\u0c41 \u0c35\u0c46\u0c2c\u0c4d \u0c38\u0c46\u0c15\u0c4d\u0c2f\u0c42\u0c30\u0c3f\u0c1f\u0c40"},"content":{"rendered":"<p>Bu blog yaz\u0131s\u0131, web g\u00fcvenli\u011finin kritik bir par\u00e7as\u0131 olan Cross-Origin Resource Sharing (CORS)&#8217;i kapsaml\u0131 bir \u015fekilde ele almaktad\u0131r. CORS&#8217;un ne oldu\u011fu ve web uygulamalar\u0131 i\u00e7in neden \u00f6nemli oldu\u011fu a\u00e7\u0131klan\u0131rken, tarih\u00e7esi ve geli\u015fimi hakk\u0131nda bilgiler sunulmaktad\u0131r. CORS kullanman\u0131n temel faydalar\u0131 vurgulanarak, yap\u0131land\u0131rma ad\u0131mlar\u0131 basit bir k\u0131lavuz e\u015fli\u011finde anlat\u0131lmaktad\u0131r. Teknik detaylara inilerek, CORS hatalar\u0131 ve \u00e7\u00f6z\u00fcmleri ayr\u0131nt\u0131l\u0131 bir \u015fekilde incelenmektedir. CORS&#8217;un g\u00fcvenli\u011fini art\u0131racak stratejiler ve politika uygulama \u00f6rnekleri sunulmaktad\u0131r. Ayr\u0131ca, CORS ile ilgili yayg\u0131n yanl\u0131\u015f anlamalar giderilerek, bu konuda bilinmesi gereken en \u00f6nemli noktalar \u00f6zetlenmektedir. Web geli\u015ftiricileri i\u00e7in CORS konusunda kapsaml\u0131 bir rehber niteli\u011findedir.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"CORS_Nedir_ve_Web_Uygulamalari_Icin_Onemi\"><\/span>CORS Nedir ve Web Uygulamalar\u0131 \u0130\u00e7in \u00d6nemi<span class=\"ez-toc-section-end\"><\/span><\/h2><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0130\u00e7erik Haritas\u0131<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#CORS_Nedir_ve_Web_Uygulamalari_Icin_Onemi\" >CORS Nedir ve Web Uygulamalar\u0131 \u0130\u00e7in \u00d6nemi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#CORSun_Tarihcesi_ve_Gelisimi_Hakkinda_Bilgiler\" >CORS&#8217;un Tarih\u00e7esi ve Geli\u015fimi Hakk\u0131nda Bilgiler<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#Neden_CORS_Kullanmalisiniz_Ana_Faydalari\" >Neden CORS Kullanmal\u0131s\u0131n\u0131z? Ana Faydalar\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#CORS_Yapilandirma_Adimlari_Nedir_Basit_Kilavuz\" >CORS Yap\u0131land\u0131rma Ad\u0131mlar\u0131 Nedir? Basit K\u0131lavuz<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#Cross-Origin_Resource_Paylasimi_Teknik_Ayrintilar\" >Cross-Origin Resource Payla\u015f\u0131m\u0131: Teknik Ayr\u0131nt\u0131lar<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#CORS_ve_Guvenlik\" >CORS ve G\u00fcvenlik<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#CORS_ve_Performans\" >CORS ve Performans<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#CORS_Hatalari_ve_Cozumleri_Hakkinda_Bilgiler\" >CORS Hatalar\u0131 ve \u00c7\u00f6z\u00fcmleri Hakk\u0131nda Bilgiler<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#CORSun_Guvenligini_Artiracak_Stratejiler\" >CORS&#8217;un G\u00fcvenli\u011fini Art\u0131racak Stratejiler<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#CORS_Politikalari_ve_Uygulama_Ornekleri\" >CORS Politikalar\u0131 ve Uygulama \u00d6rnekleri<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#Farkli_Tarayicilar_Uzerindeki_CORS_Uygulamalari\" >Farkl\u0131 Taray\u0131c\u0131lar \u00dczerindeki CORS Uygulamalar\u0131<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#CORS_Ile_Ilgili_Yaygin_Yanlis_Anlamalar\" >CORS \u0130le \u0130lgili Yayg\u0131n Yanl\u0131\u015f Anlamalar<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#CORS_Hakkinda_Bilmeniz_Gereken_En_Onemli_Noktalar\" >CORS Hakk\u0131nda Bilmeniz Gereken En \u00d6nemli Noktalar<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.hostragons.com\/te\/%e0%b0%ac%e0%b1%8d%e0%b0%b2%e0%b0%be%e0%b0%97%e0%b1%81\/cross-origin-resource-sharing-cors-ve-web-guvenligi\/#Sik_Sorulan_Sorular\" >S\u0131k Sorulan Sorular<\/a><\/li><\/ul><\/nav><\/div>\n\n<p><strong>Cross-Origin Resource<\/strong> Sharing (CORS), web taray\u0131c\u0131lar\u0131n\u0131n bir web sayfas\u0131n\u0131n farkl\u0131 bir domainden kaynaklara eri\u015fmesine izin veren veya engelleyen bir g\u00fcvenlik mekanizmas\u0131d\u0131r. Temelde, bir web uygulamas\u0131n\u0131n kendi domaini d\u0131\u015f\u0131ndaki kaynaklara (\u00f6rne\u011fin, API&#8217;ler, fontlar, resimler) eri\u015fimini kontrol etmesini sa\u011flar. CORS, modern web g\u00fcvenli\u011finin temel ta\u015flar\u0131ndan biridir ve web uygulamalar\u0131n\u0131n g\u00fcvenli\u011fini sa\u011flamak i\u00e7in kritik bir rol oynar.<\/p>\n<p>CORS, \u00f6zellikle tek sayfa uygulamalar\u0131 (SPA) ve mikro hizmet mimarileri gibi modern web geli\u015ftirme yakla\u015f\u0131mlar\u0131nda b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bu t\u00fcr uygulamalar genellikle farkl\u0131 domainlerdeki API&#8217;lere ve di\u011fer kaynaklara ba\u011f\u0131ml\u0131d\u0131r. CORS, bu kaynaklar\u0131n g\u00fcvenli bir \u015fekilde payla\u015f\u0131lmas\u0131n\u0131 sa\u011flayarak, k\u00f6t\u00fc niyetli sitelerin hassas verilere eri\u015fmesini engeller. E\u011fer CORS mekanizmas\u0131 olmasayd\u0131, herhangi bir web sitesi, ba\u015fka bir sitenin kullan\u0131c\u0131 verilerini \u00e7almak veya de\u011fi\u015ftirmek i\u00e7in JavaScript kullanabilirdi.<\/p>\n<ul> <strong>CORS&#8217;un Sa\u011flad\u0131\u011f\u0131 Faydalar<\/strong> <\/p>\n<li>Web uygulamalar\u0131n\u0131n farkl\u0131 domainlerden g\u00fcvenli bir \u015fekilde veri al\u0131\u015fveri\u015fi yapmas\u0131n\u0131 sa\u011flar.<\/li>\n<li>K\u00f6t\u00fc niyetli web sitelerinin kullan\u0131c\u0131 verilerine eri\u015fmesini engeller.<\/li>\n<li>API&#8217;lerin ve di\u011fer web servislerinin g\u00fcvenli\u011fini art\u0131r\u0131r.<\/li>\n<li>Modern web geli\u015ftirme yakla\u015f\u0131mlar\u0131n\u0131n (SPA, mikro hizmetler) g\u00fcvenli bir \u015fekilde uygulanmas\u0131n\u0131 destekler.<\/li>\n<li>Taray\u0131c\u0131lar aras\u0131 uyumluluk sorunlar\u0131n\u0131 minimize eder.<\/li>\n<li>Geli\u015ftiricilere, hangi kaynaklar\u0131n hangi domainlerden eri\u015filebilece\u011fi konusunda ayr\u0131nt\u0131l\u0131 kontrol imkan\u0131 sunar.<\/li>\n<\/ul>\n<p>CORS, web g\u00fcvenli\u011fi a\u00e7\u0131s\u0131ndan hayati bir \u00f6neme sahiptir \u00e7\u00fcnk\u00fc ayn\u0131 kaynak politikas\u0131 (Same-Origin Policy &#8211; SOP) ile birlikte \u00e7al\u0131\u015farak, web uygulamalar\u0131n\u0131n ve kullan\u0131c\u0131lar\u0131n verilerini korur. SOP, bir web sayfas\u0131n\u0131n yaln\u0131zca ayn\u0131 domain, protokol ve port \u00fczerindeki kaynaklara eri\u015fmesine izin verir. CORS ise, SOP&#8217;u gev\u015feterek, belirli ko\u015fullar alt\u0131nda farkl\u0131 domainlerden kaynaklara eri\u015fime izin verir. Bu, web uygulamalar\u0131n\u0131n daha esnek ve i\u015flevsel olmas\u0131n\u0131 sa\u011flarken, ayn\u0131 zamanda g\u00fcvenli\u011fi de korur.<\/p>\n<p>CORS&#8217;un do\u011fru yap\u0131land\u0131r\u0131lmas\u0131, web uygulamalar\u0131n\u0131n g\u00fcvenli\u011fi i\u00e7in <strong>kritik \u00f6neme<\/strong> sahiptir. Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir CORS politikas\u0131, web uygulamalar\u0131n\u0131 \u00e7e\u015fitli g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 savunmas\u0131z hale getirebilir. Bu nedenle, CORS&#8217;un nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve nas\u0131l do\u011fru bir \u015fekilde yap\u0131land\u0131r\u0131laca\u011f\u0131n\u0131 anlamak, her web geli\u015ftiricisi i\u00e7in \u00f6nemlidir.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"CORSun_Tarihcesi_ve_Gelisimi_Hakkinda_Bilgiler\"><\/span>CORS&#8217;un Tarih\u00e7esi ve Geli\u015fimi Hakk\u0131nda Bilgiler<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Cross-Origin Resource<\/strong> Sharing (CORS) modern web uygulamalar\u0131n\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r, ancak bu teknolojinin k\u00f6kleri ve ge\u00e7irdi\u011fi evrim, g\u00fcn\u00fcm\u00fczdeki \u00f6nemini anlamak i\u00e7in kritik bir \u00f6neme sahiptir. \u0130lk ba\u015flarda, web taray\u0131c\u0131lar\u0131 ayn\u0131 kaynak ilkesi (Same-Origin Policy) ile s\u0131n\u0131rl\u0131yd\u0131, bu da bir kayna\u011f\u0131n yaln\u0131zca kendi domain&#8217;inden gelen kaynaklara eri\u015fmesine izin veriyordu. Bu durum, farkl\u0131 domain&#8217;lerden veri \u00e7ekmeyi gerektiren modern web uygulamalar\u0131n\u0131n geli\u015ftirilmesini \u00f6nemli \u00f6l\u00e7\u00fcde k\u0131s\u0131tl\u0131yordu. CORS, bu k\u0131s\u0131tlamalar\u0131 a\u015fmak ve g\u00fcvenli bir \u015fekilde cross-origin isteklerde bulunabilmek i\u00e7in geli\u015ftirilmi\u015ftir.<\/p>\n<p>CORS&#8217;un geli\u015ftirilme s\u00fcreci, web geli\u015ftiricilerinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 pratik zorluklara bir yan\u0131t olarak ba\u015flam\u0131\u015ft\u0131r. \u00d6zellikle, farkl\u0131 kaynaklardan veri toplama ve API&#8217;lere eri\u015fme ihtiyac\u0131, web uygulamalar\u0131n\u0131n daha dinamik ve zengin \u00f6zelliklere sahip olmas\u0131n\u0131 sa\u011flamak i\u00e7in bir \u00e7\u00f6z\u00fcm gerektiriyordu. Bu ihtiyaca binaen, World Wide Web Consortium (W3C) taraf\u0131ndan standartlar belirlenerek, taray\u0131c\u0131lar\u0131n ve sunucular\u0131n nas\u0131l etkile\u015fimde bulunmas\u0131 gerekti\u011fi tan\u0131mlanm\u0131\u015ft\u0131r. Bu standartlar, geli\u015ftiricilere daha fazla esneklik sunarken, ayn\u0131 zamanda g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 da en aza indirmeyi ama\u00e7lam\u0131\u015ft\u0131r.<\/p>\n<table>\n<thead>\n<tr>\n<th>Y\u0131l<\/th>\n<th>Geli\u015fme<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>2000&#8217;ler Ba\u015f\u0131<\/td>\n<td>\u0130lk \u0130htiya\u00e7lar<\/td>\n<td>Web geli\u015ftiricileri, farkl\u0131 domain&#8217;lerden veri \u00e7ekme ihtiyac\u0131n\u0131 fark etti.<\/td>\n<\/tr>\n<tr>\n<td>2004<\/td>\n<td>\u0130lk \u00c7\u00f6z\u00fcmler<\/td>\n<td>JSONP gibi ge\u00e7ici \u00e7\u00f6z\u00fcmler ortaya \u00e7\u0131kt\u0131, ancak g\u00fcvenlik a\u00e7\u0131klar\u0131 i\u00e7eriyordu.<\/td>\n<\/tr>\n<tr>\n<td>2009<\/td>\n<td>W3C \u00c7al\u0131\u015fmalar\u0131<\/td>\n<td>W3C, CORS i\u00e7in standartlar geli\u015ftirmeye ba\u015flad\u0131.<\/td>\n<\/tr>\n<tr>\n<td>2010+<\/td>\n<td>Yayg\u0131n Kullan\u0131m<\/td>\n<td>CORS, modern taray\u0131c\u0131lar taraf\u0131ndan desteklenmeye ba\u015fland\u0131 ve yayg\u0131n olarak kullan\u0131lmaya ba\u015fland\u0131.<\/td>\n<\/tbody>\n<\/table>\n<p>CORS&#8217;un evrimi, web g\u00fcvenli\u011fi ve i\u015flevselli\u011fi aras\u0131ndaki dengeyi s\u00fcrekli olarak g\u00f6zeterek ilerlemi\u015ftir. \u0130lk uygulamalar, basit istekler i\u00e7in yeterli olsa da, zamanla daha karma\u015f\u0131k senaryolar\u0131 desteklemek \u00fczere geni\u015fletilmi\u015ftir. \u00d6rne\u011fin, \u00f6n istek (preflight request) mekanizmas\u0131, sunucunun belirli bir cross-origin iste\u011fe izin verip vermedi\u011fini kontrol etmek i\u00e7in ek bir g\u00fcvenlik katman\u0131 sa\u011flar. Bu ve benzeri geli\u015ftirmeler, CORS&#8217;u modern web uygulamalar\u0131n\u0131n g\u00fcvenli ve etkili bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayan temel bir teknoloji haline getirmi\u015ftir.<\/p>\n<p>  <strong>CORS&#8217;un Geli\u015fim A\u015famalar\u0131<\/strong> <\/p>\n<ol>\n<li>Ayn\u0131 Kaynak \u0130lkesi&#8217;nin (Same-Origin Policy) S\u0131n\u0131rlar\u0131<\/li>\n<li>JSONP Gibi \u0130lk \u00c7\u00f6z\u00fcmlerin Ortaya \u00c7\u0131k\u0131\u015f\u0131 (G\u00fcvenlik A\u00e7\u0131klar\u0131yla Birlikte)<\/li>\n<li>W3C Taraf\u0131ndan Standartlar\u0131n Geli\u015ftirilmesi<\/li>\n<li>\u00d6n \u0130stek (Preflight Request) Mekanizmas\u0131n\u0131n Tan\u0131t\u0131lmas\u0131<\/li>\n<li>Modern Taray\u0131c\u0131lar Taraf\u0131ndan Yayg\u0131n Olarak Benimsenmesi<\/li>\n<\/ol>\n<p>G\u00fcn\u00fcm\u00fczde, CORS, web uygulamalar\u0131n\u0131n g\u00fcvenli bir \u015fekilde farkl\u0131 kaynaklardan veri al\u0131\u015fveri\u015fi yapabilmesini sa\u011flayan kritik bir mekanizmad\u0131r. Ancak, <strong>CORS<\/strong>&#8216;un do\u011fru yap\u0131land\u0131r\u0131lmas\u0131 ve uygulanmas\u0131, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 \u00f6nlemek i\u00e7in b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir CORS politikas\u0131, k\u00f6t\u00fc niyetli ki\u015filerin hassas verilere eri\u015fmesine olanak tan\u0131yabilir. Bu nedenle, web geli\u015ftiricilerinin CORS&#8217;un temel prensiplerini ve do\u011fru yap\u0131land\u0131rma y\u00f6ntemlerini iyi anlamalar\u0131 gerekmektedir.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Neden_CORS_Kullanmalisiniz_Ana_Faydalari\"><\/span>Neden CORS Kullanmal\u0131s\u0131n\u0131z? Ana Faydalar\u0131<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Cross-Origin Resource<\/strong> Sharing (CORS), modern web uygulamalar\u0131n\u0131n g\u00fcvenli\u011fini ve i\u015flevselli\u011fini art\u0131rmak i\u00e7in vazge\u00e7ilmez bir mekanizmad\u0131r. Ayn\u0131 k\u00f6kene sahip olmayan kaynaklar aras\u0131nda g\u00fcvenli bir \u015fekilde veri al\u0131\u015fveri\u015fi yap\u0131lmas\u0131n\u0131 sa\u011flayarak, web geli\u015ftiricilere b\u00fcy\u00fck bir esneklik sunar. CORS&#8217;un sa\u011flad\u0131\u011f\u0131 bu esneklik, farkl\u0131 domainlerdeki servislerin entegrasyonunu kolayla\u015ft\u0131r\u0131r ve kullan\u0131c\u0131 deneyimini zenginle\u015ftirir.<\/p>\n<p>CORS&#8217;un temel faydalar\u0131ndan biri, web taray\u0131c\u0131lar\u0131n\u0131n uygulad\u0131\u011f\u0131 <strong>ayn\u0131 k\u00f6ken politikas\u0131<\/strong> (Same-Origin Policy) nedeniyle ortaya \u00e7\u0131kan k\u0131s\u0131tlamalar\u0131 a\u015fmakt\u0131r. Bu politika, bir web sayfas\u0131n\u0131n yaln\u0131zca ayn\u0131 protokole, ayn\u0131 porta (belirtilmi\u015fse) ve ayn\u0131 ana makineye sahip kaynaklara eri\u015fmesine izin verir. CORS, sunucular\u0131n hangi k\u00f6kenlerden gelen isteklere izin verece\u011fini belirlemesine olanak tan\u0131yarak, bu k\u0131s\u0131tlamalar\u0131 g\u00fcvenli bir \u015fekilde gev\u015fetir.<\/p>\n<p> <strong>CORS&#8217;un Avantajlar\u0131<\/strong> <\/p>\n<ul>\n<li>Farkl\u0131 domainlerdeki API&#8217;lere g\u00fcvenli eri\u015fim imkan\u0131 sa\u011flar.<\/li>\n<li>Web uygulamalar\u0131n\u0131n daha mod\u00fcler ve \u00f6l\u00e7eklenebilir olmas\u0131na yard\u0131mc\u0131 olur.<\/li>\n<li>Geli\u015ftiricilere daha fazla esneklik ve kontrol sunar.<\/li>\n<li>Kullan\u0131c\u0131 deneyimini zenginle\u015ftiren entegrasyonlara olanak tan\u0131r.<\/li>\n<li>G\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 azaltarak, web uygulamalar\u0131n\u0131n daha g\u00fcvenli olmas\u0131n\u0131 sa\u011flar.<\/li>\n<\/ul>\n<p>A\u015fa\u011f\u0131daki tabloda CORS&#8217;un temel \u00f6zelliklerini ve sa\u011flad\u0131\u011f\u0131 avantajlar\u0131 daha detayl\u0131 bir \u015fekilde inceleyebilirsiniz:<\/p>\n<table>\n<thead>\n<tr>\n<th>\u00d6zellik<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<th>Avantaj<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>K\u00f6kenler Aras\u0131 \u0130stekler<\/strong><\/td>\n<td>Farkl\u0131 domainlerden yap\u0131lan HTTP istekleri.<\/td>\n<td>Veri payla\u015f\u0131m\u0131n\u0131 ve servis entegrasyonunu m\u00fcmk\u00fcn k\u0131lar.<\/td>\n<\/tr>\n<tr>\n<td><strong>\u00d6n Kontrol \u0130stekleri (Preflight)<\/strong><\/td>\n<td><code>OPTIONS<\/code> metodu ile yap\u0131lan, sunucunun CORS politikas\u0131n\u0131 kontrol eden istekler.<\/td>\n<td>G\u00fcvenli veri transferini sa\u011flar ve olas\u0131 g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 \u00f6nler.<\/td>\n<\/tr>\n<tr>\n<td><strong>\u0130zin Verilen K\u00f6kenler (Allowed Origins)<\/strong><\/td>\n<td>Sunucunun hangi domainlerden gelen isteklere izin verdi\u011fini belirten liste.<\/td>\n<td>Kontroll\u00fc ve g\u00fcvenli eri\u015fim sa\u011flar.<\/td>\n<\/tr>\n<tr>\n<td><strong>Kimlik Bilgisi Deste\u011fi (Credential Support)<\/strong><\/td>\n<td>\u00c7erezler ve kimlik do\u011frulama ba\u015fl\u0131klar\u0131 gibi bilgilerin payla\u015f\u0131m\u0131n\u0131 sa\u011flar.<\/td>\n<td>Kullan\u0131c\u0131 oturumlar\u0131n\u0131 ve ki\u015fiselle\u015ftirilmi\u015f deneyimleri destekler.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>CORS&#8217;un do\u011fru yap\u0131land\u0131r\u0131lmas\u0131, web uygulamalar\u0131n\u0131n g\u00fcvenli\u011fi i\u00e7in kritik \u00f6neme sahiptir. Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir CORS politikas\u0131, sald\u0131rganlar\u0131n hassas verilere eri\u015fmesine veya k\u00f6t\u00fc ama\u00e7l\u0131 kod \u00e7al\u0131\u015ft\u0131rmas\u0131na olanak tan\u0131yabilir. Bu nedenle, CORS yap\u0131land\u0131rmas\u0131n\u0131n dikkatli bir \u015fekilde planlanmas\u0131 ve uygulanmas\u0131, web g\u00fcvenli\u011finin sa\u011flanmas\u0131 a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"CORS_Yapilandirma_Adimlari_Nedir_Basit_Kilavuz\"><\/span>CORS Yap\u0131land\u0131rma Ad\u0131mlar\u0131 Nedir? Basit K\u0131lavuz<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Cross-Origin Resource<\/strong> Sharing (CORS) yap\u0131land\u0131rmas\u0131, web uygulamalar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini sa\u011flamak ve farkl\u0131 kaynaklardan veri al\u0131\u015fveri\u015fini d\u00fczenlemek i\u00e7in kritik bir \u00f6neme sahiptir. Bu yap\u0131land\u0131rma, bir web sayfas\u0131n\u0131n farkl\u0131 bir domain \u00fczerinden kaynaklara eri\u015fimini kontrol etmenizi sa\u011flar. Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir CORS politikas\u0131, g\u00fcvenlik a\u00e7\u0131klar\u0131na yol a\u00e7abilirken, do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f bir CORS ise uygulaman\u0131z\u0131n g\u00fcvenli\u011fini art\u0131r\u0131r ve sorunsuz \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>CORS yap\u0131land\u0131rmas\u0131na ba\u015flamadan \u00f6nce, uygulaman\u0131z\u0131n ihtiya\u00e7lar\u0131n\u0131 ve hangi kaynaklara eri\u015fmesi gerekti\u011fini belirlemeniz \u00f6nemlidir. Bu, hangi domainlerin g\u00fcvenilir oldu\u011funu ve hangi HTTP metotlar\u0131n\u0131n (GET, POST, PUT, DELETE vb.) izin verilmesi gerekti\u011fini anlaman\u0131za yard\u0131mc\u0131 olur. Bu analiz, daha sonraki yap\u0131land\u0131rma ad\u0131mlar\u0131n\u0131 daha bilin\u00e7li bir \u015fekilde atman\u0131z\u0131 sa\u011flar.<\/p>\n<ol> <strong>CORS Yap\u0131land\u0131rma Ad\u0131mlar\u0131<\/strong> <\/p>\n<li>\u0130htiya\u00e7 Analizi Yap\u0131n: Hangi kaynaklara eri\u015fmeniz gerekti\u011fini belirleyin.<\/li>\n<li>Sunucu Taraf\u0131nda Yap\u0131land\u0131rma: Sunucu taraf\u0131nda uygun HTTP ba\u015fl\u0131klar\u0131n\u0131 ayarlay\u0131n.<\/li>\n<li>Origin Ba\u015fl\u0131\u011f\u0131n\u0131 Do\u011fru Ayarlay\u0131n: \u0130zin verilen domainleri belirtin.<\/li>\n<li>HTTP Metotlar\u0131n\u0131 Belirleyin: \u0130zin verilen metotlar\u0131 (GET, POST vb.) tan\u0131mlay\u0131n.<\/li>\n<li>Credentials Ayarlar\u0131n\u0131 Yap\u0131n: \u00c7erezlerin ve kimlik bilgilerinin g\u00f6nderilmesine izin verin.<\/li>\n<li>Hata Y\u00f6netimi: CORS hatalar\u0131n\u0131 d\u00fczg\u00fcn bir \u015fekilde ele al\u0131n.<\/li>\n<\/ol>\n<p>CORS yap\u0131land\u0131rmas\u0131 s\u0131ras\u0131nda, sunucu taraf\u0131nda uygun HTTP ba\u015fl\u0131klar\u0131n\u0131 ayarlamak esast\u0131r. `Access-Control-Allow-Origin` ba\u015fl\u0131\u011f\u0131, hangi domainlerin kayna\u011fa eri\u015febilece\u011fini belirtir. `Access-Control-Allow-Methods` ba\u015fl\u0131\u011f\u0131, hangi HTTP metotlar\u0131n\u0131n kullan\u0131labilece\u011fini tan\u0131mlar. `Access-Control-Allow-Headers` ba\u015fl\u0131\u011f\u0131 ise, hangi \u00f6zel ba\u015fl\u0131klar\u0131n iste\u011fe dahil edilebilece\u011fini belirtir. Bu ba\u015fl\u0131klar\u0131n do\u011fru bir \u015fekilde yap\u0131land\u0131r\u0131lmas\u0131, uygulaman\u0131z\u0131n g\u00fcvenli ve uyumlu bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<table>\n<tr>\n<th>HTTP Ba\u015fl\u0131\u011f\u0131<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<th>\u00d6rnek De\u011fer<\/th>\n<\/tr>\n<tr>\n<td>Access-Control-Allow-Origin<\/td>\n<td>\u0130zin verilen kaynak domainleri<\/td>\n<td>https:\/\/example.com<\/td>\n<\/tr>\n<tr>\n<td>Access-Control-Allow-Methods<\/td>\n<td>\u0130zin verilen HTTP metotlar\u0131<\/td>\n<td>GET, POST, PUT<\/td>\n<\/tr>\n<tr>\n<td>Access-Control-Allow-Headers<\/td>\n<td>\u0130zin verilen \u00f6zel ba\u015fl\u0131klar<\/td>\n<td>Content-Type, Authorization<\/td>\n<\/tr>\n<tr>\n<td>Access-Control-Allow-Credentials<\/td>\n<td>\u00c7erezlerin g\u00f6nderilmesine izin verme<\/td>\n<td>true<\/td>\n<\/tr>\n<\/table>\n<p>CORS hatalar\u0131n\u0131 d\u00fczg\u00fcn bir \u015fekilde ele almak ve kullan\u0131c\u0131lar\u0131n\u0131za anlaml\u0131 geri bildirimler sunmak \u00f6nemlidir. Taray\u0131c\u0131 konsolunda g\u00f6r\u00fcnen CORS hatalar\u0131, genellikle yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir CORS politikas\u0131n\u0131n i\u015faretidir. Bu hatalar\u0131 gidermek i\u00e7in, sunucu taraf\u0131ndaki yap\u0131land\u0131rman\u0131z\u0131 kontrol edin ve gerekli d\u00fczeltmeleri yap\u0131n. Ayr\u0131ca, uygulaman\u0131z\u0131n g\u00fcvenli\u011fini art\u0131rmak i\u00e7in <strong>CORS<\/strong> politikalar\u0131n\u0131z\u0131 d\u00fczenli olarak g\u00f6zden ge\u00e7irin ve g\u00fcncel tutun.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Cross-Origin_Resource_Paylasimi_Teknik_Ayrintilar\"><\/span>Cross-Origin Resource Payla\u015f\u0131m\u0131: Teknik Ayr\u0131nt\u0131lar<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Cross-Origin Resource<\/strong> Sharing (CORS), web taray\u0131c\u0131lar\u0131n\u0131n bir kaynaktan (origin) y\u00fcklenen web sayfalar\u0131n\u0131n farkl\u0131 bir kaynaktaki kaynaklara eri\u015fmesine izin veren bir mekanizmad\u0131r. Temel olarak, bir web sayfas\u0131n\u0131n farkl\u0131 bir domain, protokol veya port \u00fczerinden kaynak talep etmesini m\u00fcmk\u00fcn k\u0131lar. Bu mekanizma, web uygulamalar\u0131n\u0131n modern gereksinimlerini kar\u015f\u0131lamak i\u00e7in kritik bir \u00f6neme sahiptir. Ancak, do\u011fru yap\u0131land\u0131r\u0131lmad\u0131\u011f\u0131nda ciddi g\u00fcvenlik riskleri olu\u015fturabilir.<\/p>\n<p>CORS&#8217;un teknik ayr\u0131nt\u0131lar\u0131na inmeden \u00f6nce, kaynak (origin) kavram\u0131n\u0131 anlamak \u00f6nemlidir. Bir kaynak, protokol (http\/https), domain (example.com) ve port (80\/443) kombinasyonundan olu\u015fur. E\u011fer bu \u00fc\u00e7 bile\u015fenden herhangi biri farkl\u0131ysa, iki kaynak farkl\u0131 olarak kabul edilir. CORS, taray\u0131c\u0131lar taraf\u0131ndan uygulanan bir g\u00fcvenlik \u00f6nlemi olan Ayn\u0131 Kaynak Politikas\u0131 (Same-Origin Policy) etraf\u0131nda \u015fekillenmi\u015ftir.<\/p>\n<table>\n<thead>\n<tr>\n<th>Senaryo<\/th>\n<th>\u0130stek Kayna\u011f\u0131<\/th>\n<th>Hedef Kaynak<\/th>\n<th>CORS Gerekli mi?<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Ayn\u0131 Domain<\/td>\n<td>http:\/\/example.com<\/td>\n<td>http:\/\/example.com\/api<\/td>\n<td>Hay\u0131r<\/td>\n<\/tr>\n<tr>\n<td>Farkl\u0131 Port<\/td>\n<td>http:\/\/example.com:8080<\/td>\n<td>http:\/\/example.com:3000\/api<\/td>\n<td>Evet<\/td>\n<\/tr>\n<tr>\n<td>Farkl\u0131 Protokol<\/td>\n<td>http:\/\/example.com<\/td>\n<td>https:\/\/example.com\/api<\/td>\n<td>Evet<\/td>\n<\/tr>\n<tr>\n<td>Farkl\u0131 Domain<\/td>\n<td>http:\/\/example.com<\/td>\n<td>http:\/\/api.example.com\/api<\/td>\n<td>Evet<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>CORS, sunucu taraf\u0131nda HTTP ba\u015fl\u0131klar\u0131 arac\u0131l\u0131\u011f\u0131yla kontrol edilir. Taray\u0131c\u0131, bir cross-origin iste\u011fi yapt\u0131\u011f\u0131nda, sunucu bu iste\u011fe belirli CORS ba\u015fl\u0131klar\u0131yla yan\u0131t verir. Bu ba\u015fl\u0131klar, taray\u0131c\u0131ya hangi kaynaklar\u0131n eri\u015fmesine izin verildi\u011fini, hangi HTTP metotlar\u0131n\u0131n (GET, POST, vb.) kullan\u0131labilece\u011fini ve hangi \u00f6zel ba\u015fl\u0131klar\u0131n g\u00f6nderilebilece\u011fini belirtir. Sunucu taraf\u0131ndan g\u00f6nderilen en \u00f6nemli ba\u015fl\u0131k, <code>Access-Control-Allow-Origin<\/code> ba\u015fl\u0131\u011f\u0131d\u0131r. Bu ba\u015fl\u0131k, hangi kaynaklar\u0131n eri\u015fimine izin verildi\u011fini belirtir. De\u011fer olarak tek bir kaynak, birden fazla kaynak veya joker karakter (*) kullan\u0131labilir. Joker karakter kullan\u0131ld\u0131\u011f\u0131nda, t\u00fcm kaynaklara izin verilir, ancak bu durum g\u00fcvenlik a\u00e7\u0131s\u0131ndan riskli olabilir.<\/p>\n<ul> <strong>Cross-Origin Resource \u00d6zellikleri<\/strong> <\/p>\n<li><strong>Access-Control-Allow-Origin:<\/strong> \u0130zin verilen kaynaklar\u0131 belirtir.<\/li>\n<li><strong>Access-Control-Allow-Methods:<\/strong> \u0130zin verilen HTTP metotlar\u0131n\u0131 belirtir.<\/li>\n<li><strong>Access-Control-Allow-Headers:<\/strong> \u0130zin verilen \u00f6zel ba\u015fl\u0131klar\u0131 belirtir.<\/li>\n<li><strong>Access-Control-Expose-Headers:<\/strong> Taray\u0131c\u0131n\u0131n eri\u015febilece\u011fi ba\u015fl\u0131klar\u0131 belirtir.<\/li>\n<li><strong>Access-Control-Allow-Credentials:<\/strong> Kimlik bilgilerinin (\u00e7erezler, HTTP kimlik do\u011frulama) g\u00f6nderilmesine izin verilip verilmedi\u011fini belirtir.<\/li>\n<\/ul>\n<p>CORS mekanizmas\u0131, basit istekler (simple requests) ve preflight istekleri (preflight requests) olmak \u00fczere iki t\u00fcr iste\u011fi destekler. Basit istekler, belirli ko\u015fullar\u0131 sa\u011flayan (\u00f6rne\u011fin, GET, HEAD veya POST metotlar\u0131n\u0131n kullan\u0131lmas\u0131 ve belirli ba\u015fl\u0131klar\u0131n kullan\u0131lmas\u0131) isteklerdir. Preflight istekleri ise, daha karma\u015f\u0131k isteklerdir ve sunucuya OPTIONS metodu ile bir \u00f6n istek g\u00f6nderilerek, ger\u00e7ek iste\u011fin g\u00fcvenli bir \u015fekilde g\u00f6nderilip g\u00f6nderilemeyece\u011fi kontrol edilir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"CORS_ve_Guvenlik\"><\/span>CORS ve G\u00fcvenlik<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>CORS, web uygulamalar\u0131n\u0131n g\u00fcvenli\u011fini art\u0131rmak i\u00e7in tasarlanm\u0131\u015f olsa da, yanl\u0131\u015f yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda g\u00fcvenlik a\u00e7\u0131klar\u0131 olu\u015fturabilir. \u00d6rne\u011fin, <code>Access-Control-Allow-Origin<\/code> ba\u015fl\u0131\u011f\u0131nda joker karakter (*) kullan\u0131lmas\u0131, k\u00f6t\u00fc niyetli bir web sitesinin hassas verilere eri\u015fmesine olanak tan\u0131yabilir. Bu nedenle, <strong>hangi kaynaklar\u0131n eri\u015fimine izin verildi\u011fini dikkatlice belirlemek \u00f6nemlidir<\/strong>.<\/p>\n<p>G\u00fcvenlik a\u00e7\u0131s\u0131ndan dikkat edilmesi gereken bir di\u011fer nokta ise, <code>Access-Control-Allow-Credentials<\/code> ba\u015fl\u0131\u011f\u0131n\u0131n kullan\u0131m\u0131d\u0131r. Bu ba\u015fl\u0131k, kimlik bilgilerinin (\u00e7erezler, HTTP kimlik do\u011frulama) cross-origin isteklerle g\u00f6nderilmesine izin verir. E\u011fer bu ba\u015fl\u0131k yanl\u0131\u015fl\u0131kla etkinle\u015ftirilirse, cross-site scripting (XSS) gibi sald\u0131r\u0131lar daha tehlikeli hale gelebilir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"CORS_ve_Performans\"><\/span>CORS ve Performans<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>CORS yap\u0131land\u0131rmas\u0131n\u0131n performans \u00fczerinde de etkileri olabilir. Preflight istekleri, her cross-origin iste\u011fi i\u00e7in ek bir HTTP iste\u011fi g\u00f6nderilmesine neden olur. Bu durum, \u00f6zellikle s\u0131k s\u0131k cross-origin istekleri yapan uygulamalarda performans\u0131 olumsuz etkileyebilir. Bu nedenle, preflight isteklerini en aza indirmek i\u00e7in \u00e7e\u015fitli optimizasyon teknikleri kullan\u0131labilir. \u00d6rne\u011fin, basit isteklerin kullan\u0131lmas\u0131 veya sunucu taraf\u0131nda \u00f6nbellekleme mekanizmalar\u0131n\u0131n kullan\u0131lmas\u0131, performans\u0131 art\u0131rabilir.<\/p>\n<p>CORS yap\u0131land\u0131rmas\u0131n\u0131n do\u011fru bir \u015fekilde test edilmesi ve izlenmesi \u00f6nemlidir. Taray\u0131c\u0131 geli\u015ftirici ara\u00e7lar\u0131 veya \u00f6zel CORS test ara\u00e7lar\u0131 kullan\u0131larak, CORS hatalar\u0131 tespit edilebilir ve \u00e7\u00f6z\u00fclebilir. Ayr\u0131ca, sunucu taraf\u0131nda CORS ba\u015fl\u0131klar\u0131n\u0131n do\u011fru bir \u015fekilde ayarland\u0131\u011f\u0131ndan emin olmak i\u00e7in d\u00fczenli olarak denetimler yap\u0131lmal\u0131d\u0131r.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"CORS_Hatalari_ve_Cozumleri_Hakkinda_Bilgiler\"><\/span>CORS Hatalar\u0131 ve \u00c7\u00f6z\u00fcmleri Hakk\u0131nda Bilgiler<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Cross-Origin Resource<\/strong> Sharing (CORS) hatalar\u0131, web geli\u015ftirme s\u00fcrecinde kar\u015f\u0131la\u015f\u0131lan yayg\u0131n sorunlardan biridir. Bu hatalar, bir web sayfas\u0131n\u0131n farkl\u0131 bir domain&#8217;den kaynaklara (\u00f6rne\u011fin, JavaScript dosyalar\u0131, CSS veya API verileri) eri\u015fmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131nda ortaya \u00e7\u0131kar. Taray\u0131c\u0131lar, g\u00fcvenlik nedeniyle, ayn\u0131 kaynak (same-origin) politikas\u0131 uygular ve bu politika, farkl\u0131 kaynaklardan gelen istekleri varsay\u0131lan olarak engeller. CORS, bu k\u0131s\u0131tlamalar\u0131 hafifletmek ve g\u00fcvenli bir \u015fekilde farkl\u0131 kaynaklardan veri al\u0131\u015fveri\u015fini sa\u011flamak i\u00e7in geli\u015ftirilmi\u015f bir mekanizmad\u0131r. Ancak, yanl\u0131\u015f yap\u0131land\u0131rmalar veya eksik ayarlar, CORS hatalar\u0131na yol a\u00e7abilir.<\/p>\n<table>\n<tr>\n<th>Hata Kodu<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<th>Olas\u0131 \u00c7\u00f6z\u00fcm<\/th>\n<\/tr>\n<tr>\n<td>No &#8216;Access-Control-Allow-Origin&#8217; header is present on the requested resource.<\/td>\n<td>Sunucu, istenen kaynak i\u00e7in &#8216;Access-Control-Allow-Origin&#8217; ba\u015fl\u0131\u011f\u0131n\u0131 i\u00e7ermiyor.<\/td>\n<td>Sunucu taraf\u0131nda &#8216;Access-Control-Allow-Origin&#8217; ba\u015fl\u0131\u011f\u0131n\u0131 yap\u0131land\u0131r\u0131n.<\/td>\n<\/tr>\n<tr>\n<td>The &#8216;Access-Control-Allow-Origin&#8217; header contains the invalid value &#8216;null&#8217;.<\/td>\n<td>&#8216;Access-Control-Allow-Origin&#8217; ba\u015fl\u0131\u011f\u0131 ge\u00e7ersiz bir &#8216;null&#8217; de\u011feri i\u00e7eriyor.<\/td>\n<td>Sunucu taraf\u0131nda do\u011fru domain ad\u0131n\u0131 veya &#8216;*&#8217; (t\u00fcm kaynaklar i\u00e7in) de\u011ferini ayarlay\u0131n.<\/td>\n<\/tr>\n<tr>\n<td>Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource.<\/td>\n<td>Ayn\u0131 Kaynak Politikas\u0131, uzaktaki kayna\u011f\u0131n okunmas\u0131n\u0131 engelliyor.<\/td>\n<td>CORS yap\u0131land\u0131rmas\u0131n\u0131 kontrol edin ve sunucu taraf\u0131nda gerekli izinleri sa\u011flay\u0131n.<\/td>\n<\/tr>\n<tr>\n<td>CORS preflight channel did not succeed.<\/td>\n<td>CORS \u00f6n kontrol (preflight) iste\u011fi ba\u015far\u0131s\u0131z oldu.<\/td>\n<td>Sunucu taraf\u0131nda OPTIONS iste\u011fi i\u00e7in do\u011fru CORS ba\u015fl\u0131klar\u0131n\u0131 yap\u0131land\u0131r\u0131n.<\/td>\n<\/tr>\n<\/table>\n<p>CORS hatalar\u0131n\u0131 anlamak ve \u00e7\u00f6zmek, web uygulamalar\u0131n\u0131n sorunsuz \u00e7al\u0131\u015fmas\u0131 i\u00e7in kritik \u00f6neme sahiptir. Bu hatalar genellikle taray\u0131c\u0131 konsolunda detayl\u0131 hata mesajlar\u0131 ile belirtilir. Bu mesajlar, hatan\u0131n kayna\u011f\u0131n\u0131 ve olas\u0131 \u00e7\u00f6z\u00fcmlerini anlamak i\u00e7in \u00f6nemli ipu\u00e7lar\u0131 sunar. \u00d6rne\u011fin, bir hata mesaj\u0131, sunucunun &#8216;Access-Control-Allow-Origin&#8217; ba\u015fl\u0131\u011f\u0131n\u0131 i\u00e7ermedi\u011fini belirtiyorsa, sunucu taraf\u0131nda bu ba\u015fl\u0131\u011f\u0131 uygun \u015fekilde yap\u0131land\u0131rmak gerekir. Ayr\u0131ca, \u00f6n kontrol isteklerinin (preflight requests) ba\u015far\u0131s\u0131z olmas\u0131, sunucunun OPTIONS isteklerini do\u011fru \u015fekilde i\u015flemedi\u011fini g\u00f6sterebilir.<\/p>\n<p> <strong>CORS Hatalar\u0131 ve \u00c7\u00f6z\u00fcm Y\u00f6ntemleri<\/strong> <\/p>\n<ul>\n<li><strong>&#8216;Access-Control-Allow-Origin&#8217; Ba\u015fl\u0131\u011f\u0131n\u0131 Yap\u0131land\u0131rma:<\/strong> Sunucu taraf\u0131nda, hangi domain&#8217;lerin kayna\u011fa eri\u015febilece\u011fini belirtmek i\u00e7in bu ba\u015fl\u0131\u011f\u0131 do\u011fru \u015fekilde ayarlay\u0131n.<\/li>\n<li><strong>\u00d6n Kontrol \u0130steklerini (Preflight Requests) Ele Alma:<\/strong> Sunucunuzun OPTIONS isteklerini do\u011fru \u015fekilde i\u015fledi\u011finden emin olun.<\/li>\n<li><strong>Vekil Sunucu (Proxy Server) Kullan\u0131m\u0131:<\/strong> CORS sorunlar\u0131n\u0131 a\u015fmak i\u00e7in, kendi sunucunuz \u00fczerinden istekleri y\u00f6nlendiren bir vekil sunucu kullanabilirsiniz.<\/li>\n<li><strong>JSONP Kullan\u0131m\u0131 (S\u0131n\u0131rl\u0131 Durumlarda):<\/strong> GET istekleri i\u00e7in, JSONP (JSON with Padding) tekni\u011fi baz\u0131 durumlarda kullan\u0131labilir, ancak bu y\u00f6ntem daha az g\u00fcvenlidir.<\/li>\n<li><strong>Hata Mesajlar\u0131n\u0131 Dikkatlice \u0130nceleme:<\/strong> Taray\u0131c\u0131 konsolundaki hata mesajlar\u0131, sorunun kayna\u011f\u0131n\u0131 anlamak i\u00e7in \u00f6nemli bilgiler i\u00e7erir.<\/li>\n<li><strong>CORS Eklentileri ve Ara\u00e7lar\u0131:<\/strong> Taray\u0131c\u0131 eklentileri veya \u00e7evrimi\u00e7i ara\u00e7lar, CORS hatalar\u0131n\u0131 tespit etmenize ve gidermenize yard\u0131mc\u0131 olabilir.<\/li>\n<\/ul>\n<p>CORS hatalar\u0131n\u0131n \u00e7\u00f6z\u00fcm\u00fc genellikle sunucu taraf\u0131nda yap\u0131lan yap\u0131land\u0131rmalarla ilgilidir. Ancak, baz\u0131 durumlarda istemci taraf\u0131nda da \u00e7\u00f6z\u00fcmler \u00fcretilebilir. \u00d6rne\u011fin, bir vekil sunucu kullanarak veya JSONP gibi alternatif veri alma y\u00f6ntemlerini deneyerek CORS sorunlar\u0131n\u0131n \u00fcstesinden gelinebilir. Ancak, bu t\u00fcr \u00e7\u00f6z\u00fcmlerin her zaman en iyi se\u00e7enek olmad\u0131\u011f\u0131n\u0131 ve g\u00fcvenlik riskleri ta\u015f\u0131yabilece\u011fini unutmamak \u00f6nemlidir. En g\u00fcvenli ve kal\u0131c\u0131 \u00e7\u00f6z\u00fcm, sunucu taraf\u0131nda do\u011fru CORS ba\u015fl\u0131klar\u0131n\u0131 yap\u0131land\u0131rmakt\u0131r. CORS&#8217;un do\u011fru bir \u015fekilde yap\u0131land\u0131r\u0131lmas\u0131, hem g\u00fcvenli\u011fi sa\u011flar hem de farkl\u0131 kaynaklardan veri al\u0131\u015fveri\u015fini m\u00fcmk\u00fcn k\u0131lar.<\/p>\n<p>CORS ile ilgili en \u00f6nemli noktalardan biri, <strong>g\u00fcvenlik<\/strong> konusudur. CORS, web uygulamalar\u0131n\u0131n g\u00fcvenli\u011fini art\u0131rmak i\u00e7in tasarlanm\u0131\u015f bir mekanizma olmas\u0131na ra\u011fmen, yanl\u0131\u015f yap\u0131land\u0131rmalar g\u00fcvenlik a\u00e7\u0131klar\u0131na yol a\u00e7abilir. \u00d6rne\u011fin, &#8216;Access-Control-Allow-Origin&#8217; ba\u015fl\u0131\u011f\u0131n\u0131n &#8216;*&#8217; olarak ayarlanmas\u0131, t\u00fcm domain&#8217;lerin kayna\u011fa eri\u015febilece\u011fi anlam\u0131na gelir ki bu da g\u00fcvenlik a\u00e7\u0131s\u0131ndan riskli olabilir. Bu nedenle, CORS yap\u0131land\u0131rmalar\u0131n\u0131n dikkatli bir \u015fekilde yap\u0131lmas\u0131 ve sadece g\u00fcvenilir kaynaklara izin verilmesi \u00f6nemlidir. Web geli\u015ftiricilerin, CORS&#8217;un nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve potansiyel g\u00fcvenlik risklerini iyi anlamalar\u0131 gerekmektedir.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"CORSun_Guvenligini_Artiracak_Stratejiler\"><\/span>CORS&#8217;un G\u00fcvenli\u011fini Art\u0131racak Stratejiler<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Cross-Origin Resource<\/strong> Sharing (CORS), web uygulamalar\u0131n\u0131n g\u00fcvenli\u011fini sa\u011flamak i\u00e7in kritik bir mekanizmad\u0131r. Ancak, yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f veya eksik g\u00fcvenlik \u00f6nlemleriyle CORS, potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131na yol a\u00e7abilir. Bu nedenle, CORS&#8217;un g\u00fcvenli\u011fini art\u0131rmak i\u00e7in \u00e7e\u015fitli stratejiler uygulamak \u00f6nemlidir. Bu stratejiler, yetkisiz eri\u015fimi engellemek, hassas verileri korumak ve web uygulamalar\u0131n\u0131n genel g\u00fcvenli\u011fini g\u00fc\u00e7lendirmek i\u00e7in tasarlanm\u0131\u015ft\u0131r.<\/p>\n<p>CORS&#8217;un g\u00fcvenli\u011fini art\u0131rmak i\u00e7in ilk ad\u0131m, <strong>Origin ba\u015fl\u0131\u011f\u0131n\u0131n do\u011fru bir \u015fekilde yap\u0131land\u0131r\u0131lmas\u0131d\u0131r<\/strong>. Sunucu taraf\u0131nda, yaln\u0131zca g\u00fcvenilir ve yetkilendirilmi\u015f kaynaklar\u0131n (origin) eri\u015fimine izin verilmelidir. Wildcard (*) kullan\u0131m\u0131ndan ka\u00e7\u0131n\u0131lmal\u0131d\u0131r, \u00e7\u00fcnk\u00fc bu, t\u00fcm kaynaklar\u0131n eri\u015fimine izin vererek g\u00fcvenlik riskini art\u0131r\u0131r. Bunun yerine, belirli kaynaklar\u0131n listesi olu\u015fturulmal\u0131 ve yaln\u0131zca bu kaynaklara eri\u015fim izni verilmelidir.<\/p>\n<ul> <strong>G\u00fcvenlik \u0130\u00e7in CORS Stratejileri<\/strong> <\/p>\n<li><strong>Belirli Origin&#8217;lere \u0130zin Verme:<\/strong> * Yerine belirli ve g\u00fcvenilir origin&#8217;leri tan\u0131mlay\u0131n.<\/li>\n<li><strong>Preflight \u0130steklerini Do\u011fru Y\u00f6netme:<\/strong> OPTIONS isteklerini dikkatlice i\u015fleyin ve gerekli ba\u015fl\u0131klar\u0131 kontrol edin.<\/li>\n<li><strong>G\u00fcvenli Ba\u015fl\u0131klar\u0131 Kullanma:<\/strong> Access-Control-Allow-Headers ba\u015fl\u0131\u011f\u0131n\u0131 do\u011fru yap\u0131land\u0131r\u0131n.<\/li>\n<li><strong>Kimlik Do\u011frulamay\u0131 G\u00fc\u00e7lendirme:<\/strong> \u00c7erezler ve yetkilendirme ba\u015fl\u0131klar\u0131 i\u00e7in ek g\u00fcvenlik \u00f6nlemleri al\u0131n.<\/li>\n<li><strong>Hata Y\u00f6netimini \u0130yile\u015ftirme:<\/strong> Hatal\u0131 CORS yap\u0131land\u0131rmalar\u0131n\u0131 tespit etmek ve d\u00fczeltmek i\u00e7in izleme sistemleri kurun.<\/li>\n<li><strong>D\u00fczenli G\u00fcvenlik Denetimleri Yapma:<\/strong> CORS yap\u0131land\u0131rmalar\u0131n\u0131z\u0131 d\u00fczenli olarak test edin ve g\u00fcncelleyin.<\/li>\n<\/ul>\n<p>A\u015fa\u011f\u0131daki tabloda, CORS g\u00fcvenli\u011fini art\u0131rmak i\u00e7in kullan\u0131labilecek baz\u0131 ba\u015fl\u0131klar ve a\u00e7\u0131klamalar\u0131 yer almaktad\u0131r. Bu ba\u015fl\u0131klar\u0131n do\u011fru yap\u0131land\u0131r\u0131lmas\u0131, yetkisiz eri\u015fimi engellemek ve veri g\u00fcvenli\u011fini sa\u011flamak i\u00e7in \u00f6nemlidir.<\/p>\n<table>\n<tr>\n<th>Ba\u015fl\u0131k<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<th>\u00d6rnek De\u011fer<\/th>\n<\/tr>\n<tr>\n<td>Access-Control-Allow-Origin<\/td>\n<td>Eri\u015fime izin verilen kaynaklar\u0131 belirtir.<\/td>\n<td>https:\/\/example.com<\/td>\n<\/tr>\n<tr>\n<td>Access-Control-Allow-Methods<\/td>\n<td>\u0130zin verilen HTTP metotlar\u0131n\u0131 belirtir.<\/td>\n<td>GET, POST, PUT, DELETE<\/td>\n<\/tr>\n<tr>\n<td>Access-Control-Allow-Headers<\/td>\n<td>\u0130zin verilen ba\u015fl\u0131klar\u0131 belirtir.<\/td>\n<td>Content-Type, Authorization<\/td>\n<\/tr>\n<tr>\n<td>Access-Control-Allow-Credentials<\/td>\n<td>Kimlik bilgilerinin (\u00e7erezler, yetkilendirme ba\u015fl\u0131klar\u0131) g\u00f6nderilmesine izin verilip verilmedi\u011fini belirtir.<\/td>\n<td>true<\/td>\n<\/tr>\n<\/table>\n<p><strong>CORS yap\u0131land\u0131rmalar\u0131n\u0131n d\u00fczenli olarak denetlenmesi<\/strong> ve g\u00fcncellenmesi gerekmektedir. Yeni g\u00fcvenlik a\u00e7\u0131klar\u0131 ve tehditler ortaya \u00e7\u0131kt\u0131k\u00e7a, CORS politikalar\u0131n\u0131n da buna g\u00f6re ayarlanmas\u0131 \u00f6nemlidir. Ayr\u0131ca, web uygulamas\u0131n\u0131n kulland\u0131\u011f\u0131 t\u00fcm \u00fc\u00e7\u00fcnc\u00fc taraf k\u00fct\u00fcphanelerin ve servislerin CORS politikalar\u0131 da g\u00f6zden ge\u00e7irilmelidir. Bu sayede, olas\u0131 g\u00fcvenlik riskleri en aza indirilebilir ve web uygulamas\u0131n\u0131n genel g\u00fcvenli\u011fi sa\u011flanabilir.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"CORS_Politikalari_ve_Uygulama_Ornekleri\"><\/span>CORS Politikalar\u0131 ve Uygulama \u00d6rnekleri<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Cross-Origin Resource<\/strong> Sharing (CORS) politikalar\u0131, web taray\u0131c\u0131lar\u0131n\u0131n bir kaynaktan (origin) y\u00fcklenen web sayfalar\u0131n\u0131n, farkl\u0131 bir kaynaktan kaynaklara eri\u015fmesini k\u0131s\u0131tlayan g\u00fcvenlik mekanizmalar\u0131n\u0131 tan\u0131mlar. Bu politikalar, k\u00f6t\u00fc niyetli web sitelerinin hassas verilere eri\u015fmesini engelleyerek kullan\u0131c\u0131 g\u00fcvenli\u011fini art\u0131rmay\u0131 ama\u00e7lar. Temel olarak, CORS, bir web uygulamas\u0131n\u0131n sadece izin verilen kaynaklardan veri almas\u0131na izin verir, b\u00f6ylece yetkisiz eri\u015fimlerin \u00f6n\u00fcne ge\u00e7ilir.<\/p>\n<p>CORS politikalar\u0131n\u0131n uygulanmas\u0131, sunucu taraf\u0131nda yap\u0131lan yap\u0131land\u0131rmalarla belirlenir. Sunucu, HTTP ba\u015fl\u0131klar\u0131 arac\u0131l\u0131\u011f\u0131yla hangi kaynaklar\u0131n eri\u015fimine izin verildi\u011fini belirtir. Taray\u0131c\u0131, bu ba\u015fl\u0131klara bakarak iste\u011fin yap\u0131ld\u0131\u011f\u0131 kayna\u011f\u0131n izinli olup olmad\u0131\u011f\u0131n\u0131 kontrol eder. E\u011fer kaynak izinli de\u011filse, taray\u0131c\u0131 iste\u011fi engeller ve JavaScript konsolunda bir hata mesaj\u0131 g\u00f6sterir. Bu sayede, web uygulamalar\u0131, istemci taraf\u0131nda herhangi bir de\u011fi\u015fiklik yapmadan g\u00fcvenli bir \u015fekilde \u00e7al\u0131\u015fabilir.<\/p>\n<table>\n<thead>\n<tr>\n<th>HTTP Ba\u015fl\u0131\u011f\u0131<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<th>\u00d6rnek De\u011fer<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Access-Control-Allow-Origin<\/td>\n<td>\u0130zin verilen kaynaklar\u0131 belirtir.<\/td>\n<td>https:\/\/example.com<\/td>\n<\/tr>\n<tr>\n<td>Access-Control-Allow-Methods<\/td>\n<td>\u0130zin verilen HTTP metotlar\u0131n\u0131 belirtir.<\/td>\n<td>GET, POST, PUT<\/td>\n<\/tr>\n<tr>\n<td>Access-Control-Allow-Headers<\/td>\n<td>\u0130zin verilen \u00f6zel ba\u015fl\u0131klar\u0131 belirtir.<\/td>\n<td>X-Custom-Header, Content-Type<\/td>\n<\/tr>\n<tr>\n<td>Access-Control-Allow-Credentials<\/td>\n<td>Kimlik bilgilerinin (\u00e7erezler, yetkilendirme ba\u015fl\u0131klar\u0131) g\u00f6nderilip g\u00f6nderilmeyece\u011fini belirtir.<\/td>\n<td>true<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>CORS politikalar\u0131n\u0131 yap\u0131land\u0131rmak, bazen karma\u015f\u0131k olabilir ve yanl\u0131\u015f yap\u0131land\u0131rmalar g\u00fcvenlik a\u00e7\u0131klar\u0131na yol a\u00e7abilir. \u00d6rne\u011fin, <code>Access-Control-Allow-Origin: *<\/code> kullanmak, t\u00fcm kaynaklar\u0131n eri\u015fimine izin vermek anlam\u0131na gelir, bu da baz\u0131 durumlarda riskli olabilir. Bu nedenle, CORS politikalar\u0131n\u0131 dikkatli bir \u015fekilde yap\u0131land\u0131rmak ve sadece gerekli olan kaynaklara izin vermek \u00f6nemlidir. G\u00fcvenlik uzmanlar\u0131, CORS yap\u0131land\u0131rmalar\u0131n\u0131 d\u00fczenli olarak g\u00f6zden ge\u00e7irmeyi ve g\u00fcvenlik testleri yapmay\u0131 \u00f6nerir.<\/p>\n<p> <H3><span class=\"ez-toc-section\" id=\"Farkli_Tarayicilar_Uzerindeki_CORS_Uygulamalari\"><\/span>Farkl\u0131 Taray\u0131c\u0131lar \u00dczerindeki CORS Uygulamalar\u0131<\/H3> <\/p>\n<p>CORS politikalar\u0131n\u0131n uygulanmas\u0131, taray\u0131c\u0131lar aras\u0131nda baz\u0131 farkl\u0131l\u0131klar g\u00f6sterebilir. Ancak genel olarak, t\u00fcm modern taray\u0131c\u0131lar CORS standartlar\u0131n\u0131 destekler ve ayn\u0131 temel prensiplere g\u00f6re \u00e7al\u0131\u015f\u0131r. Taray\u0131c\u0131lar, sunucudan gelen HTTP ba\u015fl\u0131klar\u0131n\u0131 analiz ederek, iste\u011fin yap\u0131ld\u0131\u011f\u0131 kayna\u011f\u0131n izinli olup olmad\u0131\u011f\u0131n\u0131 kontrol eder. E\u011fer kaynak izinli de\u011filse, taray\u0131c\u0131 iste\u011fi engeller ve kullan\u0131c\u0131ya bir hata mesaj\u0131 g\u00f6sterir.<\/p>\n<p>A\u015fa\u011f\u0131da, CORS politikalar\u0131n\u0131 yap\u0131land\u0131rmak ve test etmek i\u00e7in baz\u0131 uygulama \u00f6rnekleri bulunmaktad\u0131r:<\/p>\n<ol>\n<li><strong>Sunucu Taraf\u0131nda CORS Ba\u015fl\u0131klar\u0131n\u0131 Ayarlama:<\/strong> Sunucu taraf\u0131nda, uygun <code>Access-Control-Allow-Origin<\/code> ba\u015fl\u0131klar\u0131n\u0131 ayarlayarak hangi kaynaklar\u0131n eri\u015fimine izin verildi\u011fini belirtin.<\/li>\n<li><strong>\u00d6n Kontrol (Preflight) \u0130steklerini Y\u00f6netme:<\/strong> <code>OPTIONS<\/code> metodu ile yap\u0131lan \u00f6n kontrol isteklerini do\u011fru \u015fekilde yan\u0131tlayarak, karma\u015f\u0131k CORS isteklerinin sorunsuz bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flay\u0131n.<\/li>\n<li><strong>Kimlik Bilgilerini Y\u00f6netme:<\/strong> <code>Access-Control-Allow-Credentials<\/code> ba\u015fl\u0131\u011f\u0131n\u0131 kullanarak, \u00e7erezler ve yetkilendirme ba\u015fl\u0131klar\u0131 gibi kimlik bilgilerinin g\u00f6nderilmesine izin verin veya engelleyin.<\/li>\n<li><strong>Hata Ay\u0131klama Ara\u00e7lar\u0131n\u0131 Kullanma:<\/strong> Taray\u0131c\u0131 geli\u015ftirici ara\u00e7lar\u0131n\u0131 kullanarak CORS hatalar\u0131n\u0131 tespit edin ve yap\u0131land\u0131rman\u0131z\u0131 buna g\u00f6re ayarlay\u0131n.<\/li>\n<li><strong>G\u00fcvenlik Testleri Yapma:<\/strong> CORS yap\u0131land\u0131rman\u0131z\u0131n g\u00fcvenli\u011fini test etmek i\u00e7in d\u00fczenli olarak g\u00fcvenlik taramalar\u0131 yap\u0131n ve olas\u0131 a\u00e7\u0131klar\u0131 tespit edin.<\/li>\n<li><strong>En \u0130yi Uygulamalar\u0131 \u0130zleme:<\/strong> CORS ile ilgili en iyi uygulama y\u00f6nergelerini takip ederek, g\u00fcvenli ve etkili bir yap\u0131land\u0131rma sa\u011flay\u0131n.<\/li>\n<\/ol>\n<p>CORS, web g\u00fcvenli\u011finin \u00f6nemli bir par\u00e7as\u0131d\u0131r ve do\u011fru bir \u015fekilde yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda, web uygulamalar\u0131n\u0131n g\u00fcvenli\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. Ancak, yanl\u0131\u015f yap\u0131land\u0131rmalar veya eksiklikler, g\u00fcvenlik a\u00e7\u0131klar\u0131na yol a\u00e7abilir. Bu nedenle, CORS politikalar\u0131n\u0131 anlamak ve do\u011fru bir \u015fekilde uygulamak, web geli\u015ftiricileri ve g\u00fcvenlik uzmanlar\u0131 i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<blockquote><p> CORS, modern web uygulamalar\u0131n\u0131n g\u00fcvenli\u011fini sa\u011flamak i\u00e7in vazge\u00e7ilmez bir ara\u00e7t\u0131r. Do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f CORS politikalar\u0131, yetkisiz eri\u015fimleri engelleyerek kullan\u0131c\u0131 verilerini korur. <\/p><\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"CORS_Ile_Ilgili_Yaygin_Yanlis_Anlamalar\"><\/span>CORS \u0130le \u0130lgili Yayg\u0131n Yanl\u0131\u015f Anlamalar<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Cross-Origin Resource<\/strong> Sharing (CORS), web geli\u015ftiricileri aras\u0131nda s\u0131kl\u0131kla yanl\u0131\u015f anla\u015f\u0131lan bir konudur. Bu yanl\u0131\u015f anlamalar, gereksiz g\u00fcvenlik endi\u015felerine veya hatal\u0131 yap\u0131land\u0131rmalara yol a\u00e7abilir. CORS&#8217;un ne yapt\u0131\u011f\u0131 ve ne yapmad\u0131\u011f\u0131 hakk\u0131nda net bir anlay\u0131\u015fa sahip olmak, web uygulamalar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini ve i\u015flevselli\u011fini sa\u011flamak i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<p>Bir\u00e7ok geli\u015ftirici, CORS&#8217;u bir t\u00fcr g\u00fcvenlik duvar\u0131 olarak alg\u0131lar. Ancak, bu do\u011fru de\u011fildir. CORS, taray\u0131c\u0131lar\u0131n uygulad\u0131\u011f\u0131 bir g\u00fcvenlik mekanizmas\u0131d\u0131r ve sunucunun belirli kaynaklara eri\u015fim izni verdi\u011fi alan adlar\u0131n\u0131 belirtmesine olanak tan\u0131r. CORS, k\u00f6t\u00fc niyetli sald\u0131r\u0131lar\u0131 engellemekten ziyade, <strong>istemci taraf\u0131nda<\/strong> yetkisiz kaynaklar\u0131n eri\u015fimini k\u0131s\u0131tlar.<\/p>\n<ul> <strong>Yanl\u0131\u015f Anlamalar ve Do\u011frular\u0131<\/strong> <\/p>\n<li><strong>Yanl\u0131\u015f:<\/strong> CORS, web sitelerini t\u00fcm cross-origin sald\u0131r\u0131lar\u0131ndan korur. <strong>Do\u011fru:<\/strong> CORS, yaln\u0131zca taray\u0131c\u0131lar taraf\u0131ndan uygulanan ve sunucu taraf\u0131ndan belirtilen politikalara uyan istekleri k\u0131s\u0131tlar.<\/li>\n<li><strong>Yanl\u0131\u015f:<\/strong> CORS&#8217;u devre d\u0131\u015f\u0131 b\u0131rakmak, web sitemi daha g\u00fcvenli hale getirir. <strong>Do\u011fru:<\/strong> CORS&#8217;u devre d\u0131\u015f\u0131 b\u0131rakmak, web sitenizi cross-site scripting (XSS) gibi sald\u0131r\u0131lara kar\u015f\u0131 daha savunmas\u0131z hale getirebilir.<\/li>\n<li><strong>Yanl\u0131\u015f:<\/strong> CORS, yaln\u0131zca GET istekleri i\u00e7in ge\u00e7erlidir. <strong>Do\u011fru:<\/strong> CORS, PUT, POST, DELETE gibi di\u011fer HTTP metotlar\u0131 i\u00e7in de ge\u00e7erlidir.<\/li>\n<li><strong>Yanl\u0131\u015f:<\/strong> CORS hatalar\u0131 her zaman sunucu taraf\u0131nda bir sorun oldu\u011funu g\u00f6sterir. <strong>Do\u011fru:<\/strong> CORS hatalar\u0131 hem sunucu hem de istemci taraf\u0131ndaki yap\u0131land\u0131rmalardan kaynaklanabilir.<\/li>\n<li><strong>Yanl\u0131\u015f:<\/strong> CORS, ayn\u0131 etki alan\u0131ndaki istekleri etkilemez. <strong>Do\u011fru:<\/strong> CORS, protokol (http\/https), alan ad\u0131 ve port farkl\u0131l\u0131klar\u0131 oldu\u011funda devreye girer.<\/li>\n<\/ul>\n<p>A\u015fa\u011f\u0131daki tablo, CORS ile ilgili baz\u0131 yayg\u0131n senaryolar\u0131 ve bu senaryolarda yap\u0131lmas\u0131 gereken do\u011fru yap\u0131land\u0131rmalar\u0131 \u00f6zetlemektedir. Bu tablo, CORS&#8217;u do\u011fru bir \u015fekilde anlaman\u0131za ve uygulaman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<table>\n<tr>\n<th>Senaryo<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<th>Gerekli CORS Ba\u015fl\u0131\u011f\u0131<\/th>\n<\/tr>\n<tr>\n<td>Basit \u0130stek (GET, HEAD)<\/td>\n<td>Cross-origin&#8217;den yap\u0131lan basit bir GET veya HEAD iste\u011fi.<\/td>\n<td><code>Access-Control-Allow-Origin: *<\/code> veya belirli bir alan ad\u0131<\/td>\n<\/tr>\n<tr>\n<td>Preflight \u0130stek (OPTIONS)<\/td>\n<td>PUT veya DELETE gibi metotlarla yap\u0131lan ve \u00f6zel ba\u015fl\u0131klar i\u00e7eren istekler.<\/td>\n<td><code>Access-Control-Allow-Origin: *<\/code>, <code>Access-Control-Allow-Methods: PUT, DELETE<\/code>, <code>Access-Control-Allow-Headers: Content-Type<\/code><\/td>\n<\/tr>\n<tr>\n<td>Kimlik Bilgileriyle \u0130stek (credentials)<\/td>\n<td>\u00c7erezler veya yetkilendirme ba\u015fl\u0131klar\u0131 i\u00e7eren istekler.<\/td>\n<td><code>Access-Control-Allow-Origin: belirli bir alan ad\u0131<\/code>, <code>Access-Control-Allow-Credentials: true<\/code><\/td>\n<\/tr>\n<tr>\n<td>Herhangi Bir Alan Ad\u0131na \u0130zin Verme<\/td>\n<td>T\u00fcm alan adlar\u0131ndan gelen isteklere izin verme.<\/td>\n<td><code>Access-Control-Allow-Origin: *<\/code> (G\u00fcvenlik a\u00e7\u0131\u011f\u0131na neden olabilece\u011fi i\u00e7in dikkatli kullan\u0131lmal\u0131d\u0131r)<\/td>\n<\/tr>\n<\/table>\n<p>CORS&#8217;un do\u011fru anla\u015f\u0131lmas\u0131, web uygulamalar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini ve i\u015flevselli\u011fini art\u0131rman\u0131n anahtar\u0131d\u0131r. Bu nedenle, CORS ile ilgili yanl\u0131\u015f anlamalar\u0131 gidermek ve do\u011fru uygulamalar\u0131 benimsemek \u00f6nemlidir. Unutmay\u0131n ki CORS, <strong>ek bir g\u00fcvenlik katman\u0131<\/strong> sa\u011flamakla birlikte, tek ba\u015f\u0131na bir g\u00fcvenlik \u00e7\u00f6z\u00fcm\u00fc de\u011fildir. Di\u011fer g\u00fcvenlik \u00f6nlemleriyle birlikte kullan\u0131lmal\u0131d\u0131r.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"CORS_Hakkinda_Bilmeniz_Gereken_En_Onemli_Noktalar\"><\/span>CORS Hakk\u0131nda Bilmeniz Gereken En \u00d6nemli Noktalar<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Cross-Origin Resource<\/strong> Sharing (CORS), modern web uygulamalar\u0131n\u0131n g\u00fcvenli\u011fini sa\u011flamak i\u00e7in kritik bir mekanizmad\u0131r. Temel olarak, bir web sayfas\u0131n\u0131n farkl\u0131 bir domainden kaynaklara (\u00f6rne\u011fin, JavaScript, fontlar, resimler) eri\u015fmesini kontrol eder. Taray\u0131c\u0131lar, varsay\u0131lan olarak ayn\u0131 k\u00f6ken politikas\u0131n\u0131 (Same-Origin Policy) uygular, bu da bir k\u00f6kenin di\u011ferine eri\u015fimini s\u0131n\u0131rlar. CORS, bu k\u0131s\u0131tlamalar\u0131 g\u00fcvenli bir \u015fekilde gev\u015feterek, geli\u015ftiricilere esneklik sunar.<\/p>\n<p>CORS&#8217;un nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak i\u00e7in, sunucunun istemciye hangi k\u00f6kenlere izin verdi\u011fini belirten HTTP ba\u015fl\u0131klar\u0131n\u0131 incelemek \u00f6nemlidir. \u00d6rne\u011fin, <code>Access-Control-Allow-Origin<\/code> ba\u015fl\u0131\u011f\u0131, hangi k\u00f6kenlerin kayna\u011fa eri\u015febilece\u011fini belirtir. E\u011fer bu ba\u015fl\u0131kta istemcinin k\u00f6keni belirtilmi\u015fse veya joker karakter (*) kullan\u0131lm\u0131\u015fsa, eri\u015fime izin verilir. Ancak, joker karakterin hassas verilerle kullan\u0131lmas\u0131 g\u00fcvenlik riskleri olu\u015fturabilir.<\/p>\n<table> CORS Ba\u015fl\u0131klar\u0131 ve Anlamlar\u0131 <\/p>\n<thead>\n<tr>\n<th>Ba\u015fl\u0131k Ad\u0131<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<th>\u00d6rnek De\u011fer<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Access-Control-Allow-Origin<\/td>\n<td>Kayna\u011fa eri\u015febilecek k\u00f6kenleri belirtir.<\/td>\n<td>https:\/\/example.com, *<\/td>\n<\/tr>\n<tr>\n<td>Access-Control-Allow-Methods<\/td>\n<td>\u0130zin verilen HTTP metotlar\u0131n\u0131 belirtir.<\/td>\n<td>GET, POST, PUT<\/td>\n<\/tr>\n<tr>\n<td>Access-Control-Allow-Headers<\/td>\n<td>\u0130zin verilen ba\u015fl\u0131klar\u0131 belirtir.<\/td>\n<td>Content-Type, Authorization<\/td>\n<\/tr>\n<tr>\n<td>Access-Control-Expose-Headers<\/td>\n<td>\u0130stemciye g\u00f6sterilecek ba\u015fl\u0131klar\u0131 belirtir.<\/td>\n<td>X-Custom-Header<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>CORS hatalar\u0131, geli\u015ftirme s\u00fcrecinde s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan sorunlardand\u0131r. Bu hatalar\u0131n temel nedeni, sunucunun do\u011fru CORS ba\u015fl\u0131klar\u0131n\u0131 g\u00f6ndermemesidir. Hata mesajlar\u0131 genellikle taray\u0131c\u0131 konsolunda belirir ve sorunun kayna\u011f\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 olur. Bu hatalar\u0131 \u00e7\u00f6zmek i\u00e7in, sunucu taraf\u0131nda do\u011fru yap\u0131land\u0131rmalar\u0131n yap\u0131lmas\u0131 ve gerekli ba\u015fl\u0131klar\u0131n eklenmesi gereklidir.<\/p>\n<ol> <strong>CORS Kullan\u0131rken Dikkat Edilmesi Gerekenler<\/strong> <\/p>\n<li>Sunucu taraf\u0131nda do\u011fru <code>Access-Control-Allow-Origin<\/code> ba\u015fl\u0131\u011f\u0131n\u0131 ayarlay\u0131n.<\/li>\n<li>Hassas verilerle \u00e7al\u0131\u015f\u0131rken joker karakter (*) kullan\u0131m\u0131ndan ka\u00e7\u0131n\u0131n.<\/li>\n<li>\u0130zin verilen HTTP metotlar\u0131n\u0131 (<code>Access-Control-Allow-Methods<\/code>) a\u00e7\u0131k\u00e7a belirtin.<\/li>\n<li>\u0130zin verilen ba\u015fl\u0131klar\u0131 (<code>Access-Control-Allow-Headers<\/code>) do\u011fru yap\u0131land\u0131r\u0131n.<\/li>\n<li>\u00d6n istek (preflight) isteklerinin do\u011fru \u015fekilde i\u015flendi\u011finden emin olun (OPTIONS iste\u011fi).<\/li>\n<li>Hata durumunda taray\u0131c\u0131 konsolunu kontrol ederek sorunun kayna\u011f\u0131n\u0131 tespit edin.<\/li>\n<li>Gerekti\u011finde CORS proxy sunucular\u0131 kullanarak sorunlar\u0131 a\u015f\u0131n.<\/li>\n<\/ol>\n<p>CORS&#8217;un sadece bir g\u00fcvenlik mekanizmas\u0131 olmad\u0131\u011f\u0131n\u0131, ayn\u0131 zamanda web uygulamalar\u0131n\u0131n i\u015flevselli\u011fini art\u0131ran bir ara\u00e7 oldu\u011funu unutmamak \u00f6nemlidir. Do\u011fru yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda, farkl\u0131 kaynaklardan veri \u00e7ekme ve payla\u015fma yetene\u011fi sayesinde daha zengin ve etkile\u015fimli web deneyimleri olu\u015fturulabilir. Ancak, her zaman g\u00fcvenlik \u00f6nlemlerini \u00f6n planda tutarak, potansiyel riskleri en aza indirmek \u00f6nemlidir.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Sik_Sorulan_Sorular\"><\/span>S\u0131k Sorulan Sorular<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>CORS, web uygulamalar\u0131n\u0131n g\u00fcvenli\u011fi a\u00e7\u0131s\u0131ndan neden bu kadar kritik \u00f6neme sahip?<\/strong><\/p>\n<p>CORS, taray\u0131c\u0131 tabanl\u0131 web uygulamalar\u0131n\u0131n farkl\u0131 kaynaklardan (domain, protokol, port) veri \u00e7ekmesini kontrol ederek, k\u00f6t\u00fc niyetli web sitelerinin kullan\u0131c\u0131 verilerine eri\u015fmesini engeller. Bu sayede kullan\u0131c\u0131 gizlili\u011fi ve uygulama b\u00fct\u00fcnl\u00fc\u011f\u00fc korunmu\u015f olur. Temelde, bir g\u00fcvenlik duvar\u0131 g\u00f6revi g\u00f6r\u00fcr.<\/p>\n<p><strong>CORS&#039;un geli\u015ftirilme s\u00fcreci nas\u0131l oldu ve hangi ihtiya\u00e7lardan do\u011fdu?<\/strong><\/p>\n<p>CORS, web uygulamalar\u0131n\u0131n API&#039;lere eri\u015fiminin giderek artmas\u0131yla birlikte ortaya \u00e7\u0131kan bir ihtiya\u00e7tan do\u011fdu. Ayn\u0131 Kaynak \u0130lkesi (Same-Origin Policy) baz\u0131 durumlarda \u00e7ok k\u0131s\u0131tlay\u0131c\u0131 kal\u0131yordu ve geli\u015ftiricilerin farkl\u0131 domain&#039;lerden g\u00fcvenli bir \u015fekilde veri al\u0131\u015fveri\u015fi yapmas\u0131na izin verecek bir mekanizma gerekiyordu. W3C taraf\u0131ndan standartla\u015ft\u0131r\u0131ld\u0131 ve zamanla web taray\u0131c\u0131lar\u0131 taraf\u0131ndan benimsendi.<\/p>\n<p><strong>CORS kullanmak yerine ba\u015fka hangi alternatif y\u00f6ntemler tercih edilebilir ve CORS&#039;un di\u011ferlerine g\u00f6re avantajlar\u0131 nelerdir?<\/strong><\/p>\n<p>CORS&#039;a alternatif olarak JSONP (JSON with Padding) gibi y\u00f6ntemler kullan\u0131labilir. Ancak JSONP sadece GET isteklerini destekler ve daha az g\u00fcvenlidir. CORS, hem GET hem de di\u011fer HTTP metodlar\u0131n\u0131 (POST, PUT, DELETE vb.) destekler ve daha g\u00fcvenli bir mekanizma sunar. Ayr\u0131ca CORS, sunucu taraf\u0131nda daha ince ayar yapma imkan\u0131 tan\u0131r.<\/p>\n<p><strong>CORS yap\u0131land\u0131rmas\u0131n\u0131 daha anla\u015f\u0131l\u0131r hale getirmek i\u00e7in en temel ad\u0131mlar nelerdir ve dikkat edilmesi gereken hususlar nelerdir?<\/strong><\/p>\n<p>CORS yap\u0131land\u0131rmas\u0131n\u0131n temel ad\u0131mlar\u0131 aras\u0131nda sunucu taraf\u0131nda &#039;Access-Control-Allow-Origin&#039; ba\u015fl\u0131\u011f\u0131n\u0131 ayarlamak yer al\u0131r. Bu ba\u015fl\u0131k, hangi domain&#039;lerin kayna\u011fa eri\u015fmesine izin verildi\u011fini belirtir. Dikkat edilmesi gereken en \u00f6nemli nokta, &#039;*&#039; karakterinin kullan\u0131m\u0131n\u0131n kontroll\u00fc olmas\u0131d\u0131r. Gerekli de\u011filse, belirli domain&#039;ler belirtilmelidir.<\/p>\n<p><strong>Preflight iste\u011fi (OPTIONS iste\u011fi) tam olarak nedir ve CORS mekanizmas\u0131ndaki rol\u00fc nedir?<\/strong><\/p>\n<p>Preflight iste\u011fi, taray\u0131c\u0131n\u0131n sunucuya as\u0131l iste\u011fi g\u00f6ndermeden \u00f6nce yapt\u0131\u011f\u0131 bir \u00f6n kontrold\u00fcr. OPTIONS metodu ile g\u00f6nderilir ve sunucudan, as\u0131l iste\u011fin (\u00f6rne\u011fin, POST) yap\u0131lmas\u0131na izin verilip verilmedi\u011fini sorar. Bu, \u00f6zellikle &#039;simple request&#039; olmayan istekler i\u00e7in g\u00fcvenlik \u00f6nlemi olarak kullan\u0131l\u0131r. Sunucu, bu iste\u011fe uygun CORS ba\u015fl\u0131klar\u0131yla yan\u0131t verirse as\u0131l istek g\u00f6nderilir.<\/p>\n<p><strong>S\u0131k kar\u015f\u0131la\u015f\u0131lan CORS hatalar\u0131n\u0131n en belirgin nedenleri nelerdir ve bu hatalar\u0131 gidermek i\u00e7in pratik \u00e7\u00f6z\u00fcm \u00f6nerileri nelerdir?<\/strong><\/p>\n<p>S\u0131k kar\u015f\u0131la\u015f\u0131lan CORS hatalar\u0131n\u0131n nedenleri aras\u0131nda sunucu taraf\u0131nda yanl\u0131\u015f veya eksik CORS ba\u015fl\u0131klar\u0131, domain uyu\u015fmazl\u0131\u011f\u0131 ve \u00f6n kontrol iste\u011finin (preflight) ba\u015far\u0131s\u0131z olmas\u0131 yer al\u0131r. \u00c7\u00f6z\u00fcm \u00f6nerileri aras\u0131nda sunucu taraf\u0131ndaki CORS ba\u015fl\u0131klar\u0131n\u0131 kontrol etmek, izin verilen domain&#039;leri do\u011fru yap\u0131land\u0131rmak ve \u00f6n kontrol iste\u011finin ba\u015far\u0131yla tamamlanmas\u0131n\u0131 sa\u011flamak yer al\u0131r.<\/p>\n<p><strong>CORS&#039;un g\u00fcvenli\u011fini art\u0131rmak i\u00e7in hangi ileri d\u00fczey teknikler ve stratejiler uygulanabilir?<\/strong><\/p>\n<p>CORS&#039;un g\u00fcvenli\u011fini art\u0131rmak i\u00e7in &#039;Access-Control-Allow-Credentials&#039; ba\u015fl\u0131\u011f\u0131n\u0131n dikkatli kullan\u0131m\u0131, &#039;Access-Control-Expose-Headers&#039; ba\u015fl\u0131\u011f\u0131 ile sadece gerekli ba\u015fl\u0131klar\u0131n istemci taraf\u0131na sunulmas\u0131, &#039;Origin&#039; ba\u015fl\u0131\u011f\u0131n\u0131n sunucu taraf\u0131nda do\u011frulanmas\u0131 ve Subresource Integrity (SRI) gibi ek g\u00fcvenlik \u00f6nlemleri al\u0131nabilir.<\/p>\n<p><strong>CORS hakk\u0131nda geli\u015ftiriciler aras\u0131nda en s\u0131k kar\u015f\u0131la\u015f\u0131lan yanl\u0131\u015f anla\u015f\u0131lan konular nelerdir ve bu yanl\u0131\u015f anlamalar\u0131 gidermek i\u00e7in neler s\u00f6ylenebilir?<\/strong><\/p>\n<p>CORS hakk\u0131nda en s\u0131k kar\u015f\u0131la\u015f\u0131lan yanl\u0131\u015f anlama, &#039;*&#039; de\u011ferinin &#039;herkese izin ver&#039; anlam\u0131na geldi\u011fi ve her zaman g\u00fcvenli oldu\u011fudur. Bu do\u011fru de\u011fildir. &#039;*&#039; de\u011feri, kimlik bilgileri (credentials) gerektiren isteklerde kullan\u0131lamaz ve potansiyel g\u00fcvenlik riskleri ta\u015f\u0131r. Geli\u015ftiricilerin belirli domain&#039;leri belirtmesi ve &#039;Access-Control-Allow-Credentials&#039; ba\u015fl\u0131\u011f\u0131n\u0131n ne anlama geldi\u011fini tam olarak anlamas\u0131 \u00f6nemlidir.<\/p>\n<p><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"CORS, web uygulamalaru0131nu0131n gu00fcvenliu011fi au00e7u0131su0131ndan neden bu kadar kritik u00f6neme sahip?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"CORS, tarayu0131cu0131 tabanlu0131 web uygulamalaru0131nu0131n farklu0131 kaynaklardan (domain, protokol, port) veri u00e7ekmesini kontrol ederek, ku00f6tu00fc niyetli web sitelerinin kullanu0131cu0131 verilerine eriu015fmesini engeller. Bu sayede kullanu0131cu0131 gizliliu011fi ve uygulama bu00fctu00fcnlu00fcu011fu00fc korunmuu015f olur. Temelde, bir gu00fcvenlik duvaru0131 gu00f6revi gu00f6ru00fcr.\"}},{\"@type\":\"Question\",\"name\":\"CORS'un geliu015ftirilme su00fcreci nasu0131l oldu ve hangi ihtiyau00e7lardan dou011fdu?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"CORS, web uygulamalaru0131nu0131n API'lere eriu015fiminin giderek artmasu0131yla birlikte ortaya u00e7u0131kan bir ihtiyau00e7tan dou011fdu. Aynu0131 Kaynak u0130lkesi (Same-Origin Policy) bazu0131 durumlarda u00e7ok ku0131su0131tlayu0131cu0131 kalu0131yordu ve geliu015ftiricilerin farklu0131 domain'lerden gu00fcvenli bir u015fekilde veri alu0131u015fveriu015fi yapmasu0131na izin verecek bir mekanizma gerekiyordu. W3C tarafu0131ndan standartlau015ftu0131ru0131ldu0131 ve zamanla web tarayu0131cu0131laru0131 tarafu0131ndan benimsendi.\"}},{\"@type\":\"Question\",\"name\":\"CORS kullanmak yerine bau015fka hangi alternatif yu00f6ntemler tercih edilebilir ve CORS'un diu011ferlerine gu00f6re avantajlaru0131 nelerdir?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"CORS'a alternatif olarak JSONP (JSON with Padding) gibi yu00f6ntemler kullanu0131labilir. Ancak JSONP sadece GET isteklerini destekler ve daha az gu00fcvenlidir. CORS, hem GET hem de diu011fer HTTP metodlaru0131nu0131 (POST, PUT, DELETE vb.) destekler ve daha gu00fcvenli bir mekanizma sunar. Ayru0131ca CORS, sunucu tarafu0131nda daha ince ayar yapma imkanu0131 tanu0131r.\"}},{\"@type\":\"Question\",\"name\":\"CORS yapu0131landu0131rmasu0131nu0131 daha anlau015fu0131lu0131r hale getirmek iu00e7in en temel adu0131mlar nelerdir ve dikkat edilmesi gereken hususlar nelerdir?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"CORS yapu0131landu0131rmasu0131nu0131n temel adu0131mlaru0131 arasu0131nda sunucu tarafu0131nda 'Access-Control-Allow-Origin' bau015flu0131u011fu0131nu0131 ayarlamak yer alu0131r. Bu bau015flu0131k, hangi domain'lerin kaynau011fa eriu015fmesine izin verildiu011fini belirtir. Dikkat edilmesi gereken en u00f6nemli nokta, '*' karakterinin kullanu0131mu0131nu0131n kontrollu00fc olmasu0131du0131r. Gerekli deu011filse, belirli domain'ler belirtilmelidir.\"}},{\"@type\":\"Question\",\"name\":\"Preflight isteu011fi (OPTIONS isteu011fi) tam olarak nedir ve CORS mekanizmasu0131ndaki rolu00fc nedir?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Preflight isteu011fi, tarayu0131cu0131nu0131n sunucuya asu0131l isteu011fi gu00f6ndermeden u00f6nce yaptu0131u011fu0131 bir u00f6n kontroldu00fcr. OPTIONS metodu ile gu00f6nderilir ve sunucudan, asu0131l isteu011fin (u00f6rneu011fin, POST) yapu0131lmasu0131na izin verilip verilmediu011fini sorar. Bu, u00f6zellikle 'simple request' olmayan istekler iu00e7in gu00fcvenlik u00f6nlemi olarak kullanu0131lu0131r. Sunucu, bu isteu011fe uygun CORS bau015flu0131klaru0131yla yanu0131t verirse asu0131l istek gu00f6nderilir.\"}},{\"@type\":\"Question\",\"name\":\"Su0131k karu015fu0131lau015fu0131lan CORS hatalaru0131nu0131n en belirgin nedenleri nelerdir ve bu hatalaru0131 gidermek iu00e7in pratik u00e7u00f6zu00fcm u00f6nerileri nelerdir?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Su0131k karu015fu0131lau015fu0131lan CORS hatalaru0131nu0131n nedenleri arasu0131nda sunucu tarafu0131nda yanlu0131u015f veya eksik CORS bau015flu0131klaru0131, domain uyuu015fmazlu0131u011fu0131 ve u00f6n kontrol isteu011finin (preflight) bau015faru0131su0131z olmasu0131 yer alu0131r. u00c7u00f6zu00fcm u00f6nerileri arasu0131nda sunucu tarafu0131ndaki CORS bau015flu0131klaru0131nu0131 kontrol etmek, izin verilen domain'leri dou011fru yapu0131landu0131rmak ve u00f6n kontrol isteu011finin bau015faru0131yla tamamlanmasu0131nu0131 sau011flamak yer alu0131r.\"}},{\"@type\":\"Question\",\"name\":\"CORS'un gu00fcvenliu011fini artu0131rmak iu00e7in hangi ileri du00fczey teknikler ve stratejiler uygulanabilir?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"CORS'un gu00fcvenliu011fini artu0131rmak iu00e7in 'Access-Control-Allow-Credentials' bau015flu0131u011fu0131nu0131n dikkatli kullanu0131mu0131, 'Access-Control-Expose-Headers' bau015flu0131u011fu0131 ile sadece gerekli bau015flu0131klaru0131n istemci tarafu0131na sunulmasu0131, 'Origin' bau015flu0131u011fu0131nu0131n sunucu tarafu0131nda dou011frulanmasu0131 ve Subresource Integrity (SRI) gibi ek gu00fcvenlik u00f6nlemleri alu0131nabilir.\"}},{\"@type\":\"Question\",\"name\":\"CORS hakku0131nda geliu015ftiriciler arasu0131nda en su0131k karu015fu0131lau015fu0131lan yanlu0131u015f anlau015fu0131lan konular nelerdir ve bu yanlu0131u015f anlamalaru0131 gidermek iu00e7in neler su00f6ylenebilir?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"CORS hakku0131nda en su0131k karu015fu0131lau015fu0131lan yanlu0131u015f anlama, '*' deu011ferinin 'herkese izin ver' anlamu0131na geldiu011fi ve her zaman gu00fcvenli olduu011fudur. Bu dou011fru deu011fildir. '*' deu011feri, kimlik bilgileri (credentials) gerektiren isteklerde kullanu0131lamaz ve potansiyel gu00fcvenlik riskleri tau015fu0131r. Geliu015ftiricilerin belirli domain'leri belirtmesi ve 'Access-Control-Allow-Credentials' bau015flu0131u011fu0131nu0131n ne anlama geldiu011fini tam olarak anlamasu0131 u00f6nemlidir.\"}}]}<\/script><\/p>\n<p>Daha fazla bilgi: <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/CORS\" target=\"_blank\" rel=\"noopener noreferrer\">MDN Web Docs: Cross-Origin Resource Sharing (CORS)<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bu blog yaz\u0131s\u0131, web g\u00fcvenli\u011finin kritik bir par\u00e7as\u0131 olan Cross-Origin Resource Sharing (CORS)&#8217;i kapsaml\u0131 bir \u015fekilde ele almaktad\u0131r. CORS&#8217;un ne oldu\u011fu ve web uygulamalar\u0131 i\u00e7in neden \u00f6nemli oldu\u011fu a\u00e7\u0131klan\u0131rken, tarih\u00e7esi ve geli\u015fimi hakk\u0131nda bilgiler sunulmaktad\u0131r. CORS kullanman\u0131n temel faydalar\u0131 vurgulanarak, yap\u0131land\u0131rma ad\u0131mlar\u0131 basit bir k\u0131lavuz e\u015fli\u011finde anlat\u0131lmaktad\u0131r. Teknik detaylara inilerek, CORS hatalar\u0131 ve \u00e7\u00f6z\u00fcmleri ayr\u0131nt\u0131l\u0131 [&hellip;]<\/p>\n","protected":false},"author":94,"featured_media":21186,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"googlesitekit_rrm_CAow5YvFDA:productID":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-10788","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-genel"],"_links":{"self":[{"href":"https:\/\/www.hostragons.com\/te\/wp-json\/wp\/v2\/posts\/10788","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostragons.com\/te\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostragons.com\/te\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostragons.com\/te\/wp-json\/wp\/v2\/users\/94"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostragons.com\/te\/wp-json\/wp\/v2\/comments?post=10788"}],"version-history":[{"count":0,"href":"https:\/\/www.hostragons.com\/te\/wp-json\/wp\/v2\/posts\/10788\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostragons.com\/te\/wp-json\/wp\/v2\/media\/21186"}],"wp:attachment":[{"href":"https:\/\/www.hostragons.com\/te\/wp-json\/wp\/v2\/media?parent=10788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostragons.com\/te\/wp-json\/wp\/v2\/categories?post=10788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostragons.com\/te\/wp-json\/wp\/v2\/tags?post=10788"}],"curies":[{"name":"\u0c21\u0c2c\u0c4d\u0c32\u0c4d\u0c2f\u0c41\u0c2a\u0c3f","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}