
JS - Problém s XMLHttpRequest
Ahoj, v JS dostanu tuto chybu
Access to XMLHttpRequest at 'http://192.168.0.111/getlabels' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Zjistil jsem, že je to zakázaný z důvodu bezpečnosti nebo tak něco, Přesto bych to potřeboval v nějakém prohlížeči povolit, zná někdo způsob? Díky
Z kade to taháte, čož je taky v lokálnej sieti tak tam odosiela hlavičku Access-Control-Allow-Origin: null
to znamená že treba na servery nastaviť ať to odosiela inú hlavičku. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
Jako kde to nastavit? V HTML , v JS nebo v konfiguraci apache?
Na serveru.
Na jakém serveru?
Já se ptal na nastavení prohlížeče.
Debata o ničem, jeden o koze a druhej o voze.
Debata fakt o ničem, když nevieš jak to funguje ale i tak to chceš nastavovať v HTML, to čo vôbec nie je záležistosť HTML. A ty teraz píšeš o prehliadači a minulý príspevok si spomínal apache, to ako čo má spoločné? Však ty vyvraciaš sám svoju otázku. Ani nevieš čo chceš. Tu skôr platí:
Debata o ničem, jeden o koze o sekundu ten istej týpek o voze.
Ano, ptal jsem se na to jestli v HTML, v JS (jelikož ten požadavek volám z nějakého scriptu složený z html a JS) nebo v konfiguraci apache (který běží na localhostu) ale to je nesmysl, ten nemá s prohlížečem nic společného.
hurá, teraz len pochopiť že s prohlížečem nie je problém a že chceš zmeniť hlavičku ktorú posiela server. Možno bys to pochopil kdybys prečítal vôbec tú chybovú hlášku.
Apache nemá s prohlížečem nic společného!! Ne chybová hláška!
Áno, áno, to už vieme, to už sme hovorili, tak to nastavujte v Apache, lebo je to problém konfigurácie servera.
Ne, to fakt nemá smysl.. Chápeš, že je mi u p*dele zařízení ze kterého to tahám? Chci nastavit pouze prohlížeč, v zařízení neexistuje žádné nastavení které by uživatel mohl měnit.
Vysvetlím ti to takto:
predstav si že prohlížeč je ľudské ucho.
Server je reproduktor.
Ak server ti odmieta poskytnúť tie dáta, teda nehrá zvuk. Jak chceš upraviť ucho abys počul to čo reproduktor nehrá?
Pokud to tak funguje tak jsi to vysvětlil opravdu moc hezky.
To znamená, že v tomto případě to nastavit v prohlížeči nejde. Je tady ALE.
Co když to reproduktor vysílá ale v uchu je nějaký firewall který to nechce slyšet?
Teď už ovšem přecházíš do teoretické roviny, protože to rozhodně není tvůj případ.
Když to není můj případ, tak mi objasni následující věc.
Soused má velmi staré ucho a ten slyší, co ten reproduktor hraje. Já mám nové ucho a slyším h*vno
Staré ucho == Internet Explorer 11
Nové ucho == Google Chrome 78.0.3904.108
Máš Apache, tak na Apache. Ale vidím, že o rady nestojíš, protože jsi přece chytřejší. Takže si pomoz sám.
Ale on nechce nastavovať na servery nič, on to chce v prehliadači nastavovať hlavičku čo odosiela server.
však som to napísal.
Vývojári stránky chcemelektromobil.sk by mohli rozprávať, prečo sa CORS (Cross-Origin Resource Sharing) v starších prehliadačoch neberie do úvahy a v novších áno.
Ak tomu dobre rozumiem, tak to máš takto:
Spôsobov, ako to povoliť, je viac:
1. nastaviť na getlabels serveri, aby posielal CORS hlavičky - toto je správny spôsob; musíš mať ale možnosť tieto nastavenia zmeniť
2. vložiť medzi HTTP server a getlabels server reverznú proxynu na getlabels server, ktorá tie hlavičky pridá - v sieti potom potrebuješ nastaviť tento proxy server tak, aby bol na IP 192.168.0.111 (getlabels server presunieš na inú IP adresu)
3. vložiť medzi klienta a HTTP server reverznú proxynu na HTTP server, ktorá okrem iného prepíše URL adresu so 192.168.0.111 na adresu so zhodnou doménou ako má HTTP server a túto adresu bude obsluhovať ako reverzná proxyna na getlabels server
4. upraviť implementáciu HTTP servera tak, aby tú požiadavku proxoval priamo on (a zmeniť URL tak, aby sa doména zhodovala)
5. nainštalovať rozšírenie do prehliadača pre obchádzanie CORS a nakonfigurovať ho pre tento prípad
Otázka je, nad čím máš kontrolu. Ak nad getlabels serverom, tak možnosť 1. Ak nad infraštruktúrou, tak možnosť 2 alebo 3. Ak nad implementáciou HTTP servera, tak možnosť 4. Ak iba nad svojím prehliadačom, tak možnosť 5.
Edit: Hmm, podľa toho origin 'null' budeš asi spúšťať stránky z lokálneho HTML súboru - je to tak? V tom prípade pomôže to rozšírenie do prehliadača, alebo implementácia HTTP servera.