﻿
{"id":7550,"date":"2018-04-09T19:20:48","date_gmt":"2018-04-09T19:20:48","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=7550"},"modified":"2018-04-09T19:24:08","modified_gmt":"2018-04-09T19:24:08","slug":"angular-4de-no-access-control-allow-origin-header-is-present-on-the-requested-resource-origin-xxx-is-therefore-not-allowed-access-hatasi-ve-cozumu","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/angular-4de-no-access-control-allow-origin-header-is-present-on-the-requested-resource-origin-xxx-is-therefore-not-allowed-access-hatasi-ve-cozumu\/","title":{"rendered":"Angular 4&#8217;de &#8220;No &#8216;Access-Control-Allow-Origin&#8217; Header Is Present On The Requested Resource. Origin &#8216;XXX&#8217; Is Therefore Not Allowed Access&#8221; Hatas\u0131 ve \u00c7\u00f6z\u00fcm\u00fc"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>\u00dczerine \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z bir Angular 4 uygulamas\u0131nda harici bir kayna\u011fa Http servisini kullanarak ula\u015fmak istiyorsunuz ama nedense yapt\u0131\u011f\u0131n\u0131z in\u015fa ba\u015far\u0131l\u0131 sonu\u00e7 vermiyor ve hatta &#8220;<em>Access-Control-Allow-Origin<\/em>&#8221; \u015feklinde bilinen hatayla kar\u015f\u0131la\u015f\u0131yorsan\u0131z e\u011fer sizde CROS g\u00fcvenli\u011finden kaynakl\u0131 hatayla art\u0131k tan\u0131\u015f\u0131yorsunuz demektir. Bu i\u00e7eri\u011fimizde CORS g\u00fcvenli\u011finden kaynakl\u0131 hatan\u0131n nedenini irdeleyecek ve nas\u0131l a\u015f\u0131ld\u0131\u011f\u0131n\u0131 ele alaca\u011f\u0131z.<\/p>\n<p>\u00d6ncelikle hatam\u0131z\u0131 tan\u0131mayla i\u015fe ba\u015flayal\u0131m. <em>Access-Control-Allow-Origin<\/em> hatas\u0131n\u0131n metinsel hali a\u015fa\u011f\u0131daki gibidir;<\/p>\n<blockquote><p><em><strong>Failed to load XXX: No &#8216;Access-Control-Allow-Origin&#8217; header is present on the requested resource. Origin &#8216;YYY&#8217; is therefore not allowed access.<\/strong><\/em><\/p><\/blockquote>\n<p>Hatam\u0131z\u0131 g\u00f6rsel olarak g\u00f6rmek isteyenler i\u00e7inde a\u015fa\u011f\u0131da ekran g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc payla\u015fal\u0131m;<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/Angular-4de-No-Access-Control-Allow-Origin-Header-Is-Present-On-The-Requested-Resource.-Origin-XXX-Is-Therefore-Not-Allowed-Access-Hatas\u0131-ve-\u00c7\u00f6z\u00fcm\u00fc.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7555\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/Angular-4de-No-Access-Control-Allow-Origin-Header-Is-Present-On-The-Requested-Resource.-Origin-XXX-Is-Therefore-Not-Allowed-Access-Hatas\u0131-ve-\u00c7\u00f6z\u00fcm\u00fc.png\" alt=\"Angular 4\u2019de \u201cNo \u2018Access-Control-Allow-Origin\u2019 Header Is Present On The Requested Resource. Origin \u2018XXX\u2019 Is Therefore Not Allowed Access\u201d Hatas\u0131 ve \u00c7\u00f6z\u00fcm\u00fc\" width=\"1143\" height=\"111\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/Angular-4de-No-Access-Control-Allow-Origin-Header-Is-Present-On-The-Requested-Resource.-Origin-XXX-Is-Therefore-Not-Allowed-Access-Hatas\u0131-ve-\u00c7\u00f6z\u00fcm\u00fc.png 1143w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/Angular-4de-No-Access-Control-Allow-Origin-Header-Is-Present-On-The-Requested-Resource.-Origin-XXX-Is-Therefore-Not-Allowed-Access-Hatas\u0131-ve-\u00c7\u00f6z\u00fcm\u00fc-300x29.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/Angular-4de-No-Access-Control-Allow-Origin-Header-Is-Present-On-The-Requested-Resource.-Origin-XXX-Is-Therefore-Not-Allowed-Access-Hatas\u0131-ve-\u00c7\u00f6z\u00fcm\u00fc-768x75.png 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/Angular-4de-No-Access-Control-Allow-Origin-Header-Is-Present-On-The-Requested-Resource.-Origin-XXX-Is-Therefore-Not-Allowed-Access-Hatas\u0131-ve-\u00c7\u00f6z\u00fcm\u00fc-1024x99.png 1024w\" sizes=\"auto, (max-width: 1143px) 100vw, 1143px\" \/><\/a><\/p>\n<h4>Bu Hatan\u0131n Sebebi Nedir?<\/h4>\n<p>Bu hata; front-end uygulamalarda farkl\u0131 serverlara yap\u0131lacak talepler neticesinde devreye giren CORS g\u00fcvenlik \u00f6nleminden kaynaklanmaktad\u0131r.<\/p>\n<h4>Nas\u0131l \u00c7\u00f6z\u00fcl\u00fcr?<\/h4>\n<p>CORS g\u00fcvenli\u011finden kaynaklanan bu hatan\u0131n bir\u00e7ok \u00e7\u00f6z\u00fcm\u00fc mevcuttur. Lakin benim kulland\u0131\u011f\u0131m ve tavsiye etti\u011fim y\u00f6ntem proxy kullanmaktan ge\u00e7er.<\/p>\n<p>\u0130\u00e7eri\u011fimizin devam\u0131nda nas\u0131l olu\u015fturuldu\u011funa de\u011finece\u011fimiz proxy yap\u0131s\u0131n\u0131 kullanarak, yap\u0131lan talepleri sanki ayn\u0131 server \u00fczerinde yap\u0131lm\u0131\u015f gibi g\u00f6sterecek ve CROSS-ORIGIN hatas\u0131na yakalanmadan i\u015flemlerimize devam edece\u011fiz.<\/p>\n<p>\u015eimdi olay\u0131 \u00f6rnek bir durum \u00fczerinden de\u011ferlendirelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nimport { Component, OnInit } from '@angular\/core';\r\nimport { Http, Response } from '@angular\/http';\r\nimport 'rxjs\/add\/operator\/map'\r\n@Component({\r\n  selector: 'app-root',\r\n  templateUrl: '.\/app.component.html',\r\n  styleUrls: &#x5B;'.\/app.component.css']\r\n})\r\nexport class AppComponent implements OnInit {\r\n  datas;\r\n  constructor(private http: Http) { }\r\n  ngOnInit() {\r\n    this.getDatas();\r\n  }\r\n  getDatas() {\r\n    this.http.get(&quot;http:\/\/www.gencayyildiz.com\/jsonveri.json&quot;)\r\n      .map(response =&gt; response.json())\r\n      .subscribe(data =&gt; this.datas = data);\r\n  }\r\n}\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funda g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere &#8220;http:\/\/www.gencayyildiz.com\/jsonveri.json&#8221; adresindeki harici kayna\u011fa talep g\u00f6nderilmektedir. Bu talep neticesinde gelen veri html k\u0131sm\u0131nda listelenmek istendi\u011finde \u015fuanda de\u011ferlendirdi\u011fimiz durumla kar\u015f\u0131la\u015fmaktay\u0131z ve CROSS-ORIGIN hatas\u0131n\u0131 almaktay\u0131z.<\/p>\n<p>Bu hatay\u0131 bir \u00e7\u00f6z\u00fcme kavu\u015fturmak i\u00e7in proxy yap\u0131lanmas\u0131na ba\u015flayal\u0131m ve projemizin ana dizininde &#8220;proxy.config.json&#8221; isminde bir dosya a\u00e7arak i\u00e7ini a\u015fa\u011f\u0131daki gibi in\u015fa edelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n{\r\n    &quot;\/&quot;: {\r\n        &quot;target&quot;: &quot;http:\/\/www.gencayyildiz.com&quot;,\r\n        &quot;secure&quot;: false\r\n    }\r\n}\r\n<\/pre>\n<p>Yukar\u0131daki &#8220;proxy.config.json&#8221; isimli Proxy dosyam\u0131z\u0131 incelerseniz e\u011fer belli ba\u015fl\u0131 ayarlar yap\u0131lm\u0131\u015ft\u0131r. Bu ayarlara de\u011finmek gerekirse e\u011fer;<br \/>\n&#8220;\/&#8221; parametresi ile harici kayna\u011f\u0131n bulundu\u011fu dizini belirtmekteyiz<spam style=\"font-size:10px;\">(\u00d6rn; \/jsonveri.json)<\/spam>. &#8220;target&#8221; parametresi ile de harici kayna\u011f\u0131n adresini belirtmekteyiz<spam style=\"font-size:10px;\">(\u00d6rn; http:\/\/www.gencayyildiz.com\/)<\/spam>. Bu iki de\u011feri birle\u015ftirdi\u011fimiz zaman vekilimiz(proxy) &#8220;http:\/\/www.gencayyildiz.com\/&#8221; adresinde harici kayna\u011f\u0131n yolunu belirlemi\u015f olacakt\u0131r.<\/p>\n<p>\u015eimdi tek yapmam\u0131z gereken Angular 4 uygulamam\u0131z\u0131 bu proxy ile yay\u0131na almakt\u0131r. Bu i\u015flem i\u00e7in a\u015fa\u011f\u0131daki kodu \u00e7al\u0131\u015ft\u0131rman\u0131z yeterlidir.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nng serve --proxy-config proxy.config.json\r\n<\/pre>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/Angular-4de-No-Access-Control-Allow-Origin-Header-Is-Present-On-The-Requested-Resource.-Origin-XXX-Is-Therefore-Not-Allowed-Access-Hatas\u0131-ve-\u00c7\u00f6z\u00fcm\u00fc-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/Angular-4de-No-Access-Control-Allow-Origin-Header-Is-Present-On-The-Requested-Resource.-Origin-XXX-Is-Therefore-Not-Allowed-Access-Hatas\u0131-ve-\u00c7\u00f6z\u00fcm\u00fc-1.png\" alt=\"Angular 4\u2019de \u201cNo \u2018Access-Control-Allow-Origin\u2019 Header Is Present On The Requested Resource. Origin \u2018XXX\u2019 Is Therefore Not Allowed Access\u201d Hatas\u0131 ve \u00c7\u00f6z\u00fcm\u00fc\" width=\"750\" height=\"223\" class=\"aligncenter size-full wp-image-7567\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/Angular-4de-No-Access-Control-Allow-Origin-Header-Is-Present-On-The-Requested-Resource.-Origin-XXX-Is-Therefore-Not-Allowed-Access-Hatas\u0131-ve-\u00c7\u00f6z\u00fcm\u00fc-1.png 750w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/Angular-4de-No-Access-Control-Allow-Origin-Header-Is-Present-On-The-Requested-Resource.-Origin-XXX-Is-Therefore-Not-Allowed-Access-Hatas\u0131-ve-\u00c7\u00f6z\u00fcm\u00fc-1-300x89.png 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/a><br \/>\nTabi bu ad\u0131mdan sonra http servisine harici kayna\u011f\u0131n yolunu a\u015fa\u011f\u0131daki gibi vermeniz gerekmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    http.get(&quot;\/jsonveri.json&quot;)\r\n<\/pre>\n<p>\u00c7\u00fcnk\u00fc, harici kayna\u011f\u0131n bulunaca\u011f\u0131 dizini vekil arac\u0131l\u0131\u011f\u0131yla &#8220;http:\/\/www.gencayyildiz.com\/&#8221; \u015feklinde olaca\u011f\u0131n\u0131 belirtmi\u015ftik. Art\u0131k bu &#8220;\/jsonveri.json&#8221; kayna\u011f\u0131n\u0131 &#8220;http:\/\/www.gencayyildiz.com\/&#8221; adresinde &#8220;http:\/\/www.gencayyildiz.com\/jsonveri.json&#8221; \u015feklinde aramaktad\u0131r.<\/p>\n<p>Haliyle bu d\u00fczeltmeden sonra uygulamam\u0131z\u0131n harici kayna\u011fa sorunsuz talep olu\u015fturabildi\u011fini ve verileri elde edebildi\u011fini g\u00f6rmekteyiz.<\/p>\n<p>Velev ki proxy dosyas\u0131n\u0131 ana dizinde olu\u015fturmad\u0131k ve velev ki harici kaynak bamba\u015fka bir dizindeyse e\u011fer o halde yukar\u0131da anlatt\u0131\u011f\u0131m mant\u0131kta \u00e7al\u0131\u015fmam\u0131z\u0131 \u015fekillendirecek ve kodlar\u0131m\u0131z \u00fczerinde a\u015fa\u011f\u0131daki gibi ufak de\u011fi\u015fiklikler sergileyece\u011fiz.<\/p>\n<p>Proxy dosyam\u0131z\u0131n i\u00e7ini ilgili dizine \u00f6zel ayarlayaca\u011f\u0131z. (\u00d6rn; veri dizini)<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n{\r\n    &quot;\/veri&quot;: {\r\n        &quot;target&quot;: &quot;http:\/\/www.gencayyildiz.com&quot;,\r\n        &quot;secure&quot;: false\r\n    }\r\n}\r\n<\/pre>\n<p>Uygulamay\u0131 proxy ile yay\u0131na al\u0131rken &#8220;proxy.config.json&#8221; dosyas\u0131n\u0131n oldu\u011fu dizine uygun bir \u015fekilde kod yazaca\u011f\u0131z. (\u00d6rn; src dizini)<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nng serve --proxy-config src\/proxy.config.json\r\n<\/pre>\n<p>Bu iki hususa dikkat ederseniz \u00e7al\u0131\u015fmada bir kusur olmayaca\u011f\u0131ndan emin olabilirsiniz.<\/p>\n<p>Evet&#8230;<br \/>\nG\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere Access-Control-Allow-Origin hatas\u0131ndan bu \u015fekilde kurtulabilmekte ve \u00e7al\u0131\u015fmalar\u0131m\u0131z\u0131 g\u00fcvenle harici kaynaklarla sa\u011flayabilmekteyiz&#8230;<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, \u00dczerine \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z bir Angular 4 uygulamas\u0131nda harici bir kayna\u011fa Http servisini kullanarak ula\u015fmak istiyorsunuz ama nedense yapt\u0131\u011f\u0131n\u0131z in\u015fa ba\u015far\u0131l\u0131 sonu\u00e7 vermiyor ve hatta &#8220;Access-Control-Allow-Origin&#8221; \u015feklinde bilinen hatayla kar\u015f\u0131la\u015f\u0131yorsan\u0131z e\u011fer sizde CROS g\u00fcvenli\u011finden kaynakl\u0131&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3223,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2144,258],"tags":[2235,2237,2238,2236,2240,2241,2243,2242,849,1083,2239],"class_list":["post-7550","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-angular-4","category-hata-cozumleri","tag-access-control-allow-origin","tag-access-control-allow-origin-hata","tag-angular-4-hata","tag-cors","tag-cors-guvenlik-onlemi","tag-cross","tag-cross-origin","tag-cross-origin-hatasi","tag-hata-cozumleri","tag-hata-ve-cozumu","tag-hatalar"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/7550","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=7550"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/7550\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3223"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=7550"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=7550"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=7550"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}