Yazılım PHP PHP Kodunda CORS Headers koyulmuş olmasına rağmen hata alınıyor

DarkHacker

Hectopat
Katılım
29 Mayıs 2022
Mesajlar
492
Çözümler
1
Yer
Antalya
Daha fazla  
Sistem Özellikleri
Nvidia GeForce RTX 5090
384 GB Ram
Asus Rog Strix
8TB Ssd
ı9 14900
Cinsiyet
Erkek
Meslek
Yazılımcı
Selamlar, PHP Kodumda CORS Headers koyuyorum. Amacım yaptığım bir site için google TTS 'nin bir linkini kullanmak. (https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&tl=en&q=hello how are you) Fakat index.html dosyamdan fetch etmeye çalışınca CORS uyarısı veriyor. Sebebi ne olabilir? Çözümü nedir? Yardımcı olan arkadaşlara şimdiden teşekkür ederim. (Not: Server için ProFreeHost ve InfinityFree kullandım, free host olduğu içinde olabilir)

Live reload enabled.
favicon.ico:1 Failed to load resource: the server responded with a status of 404 (Not Found)

test.html:1 Access to fetch at 'https://pixapis.unaux.com/tts.php?json=1&text=selam&lang=auto&speed=1&pitch=1' from origin 'http://127.0.0.1:5500' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.[linki kaldırdım bu linki şu an kullanamazsınız]

pixapis.unaux.com/tts.php?json=1&text=selam&lang=auto&speed=1&pitch=1:1 Failed to load resource: net::ERR_FAILED
test.html:149 TypeError: Failed to fetch
at generateTTS (test.html:117:32)
at HTMLButtonElement.onclick (test.html:72:41)

Uzun olunca hata veriyor linke koydum: Kod

Uzun olunca hata veriyor linke koydum: Kod
 
CORS kuralı koyan site sizinse ki ben öyle anladım, bunu JS ile aşamazsınız. PHP ile POST atıp JS'den çekin veya aynı url üzerindeyse basitçe domain.com/api yazacağınıza direkt /api şeklinde url verin.

Ek olarak, yazdığınız sistem büyük ihtimalle bir kaç denemeden sonra Google tarafından engellenecektir. Yani aslında boşa kürek çekiyorsunuz. Doğru API için Google tarafından sağlanan REST API'ye göre yazmanız gerekiyor.

 
Son düzenleme:
Senin CORS politikana degil, tts in CORS politikasina takiliyorsun o sebeple bunu asamazsin.

Origin ile Access farkliysa, access in CORS politikasi belirler browser davranisini guvenlik amaciyla.

Ilgili istegi backend de atip return etmeye calisabilirsin, browser politikasina uymak zorunda degilsin backend de.
 
Sorun sende değil hocam, hosting provider'ında. InfinityFree gibi free hostingler genellikle bazı header'ları override ederler. Bunun amacı sizin orada sadece web site barındırmanızı istemeleri, API ya da dosya hizmeti değil.

Kendilerinin bu konuda çok açık bir iletileri mevcut.
InfinityFree is a website hosting service. That means that the hosting accounts we provided are intended for hosting websites. Websites contain pages that are accessed through web browsers. InfinityFree is not intended to be used for file sharing, API hosting, database hosting or background tasks/tools. To help enforce this, free hosting enforces a security system that makes sure that anyone trying to access your website is using a normal web browser. This is done by checking whether the web br…

Yani sizin gönderdiğiniz her türlü istek gerçek bir browser olmadığı sürece güvenlik duvarından dönecek. Bunun için de her istekte JS falan çalıştırıyorlar. Bu yüzden genelde infinityFree'den yapılan bir siteye girdiğinizde kendini ufak bir refreshler ve URL'e "?i=1" parametresi ekler.
 

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Yeni konular

Geri
Yukarı