Chyba Access-Control-Allow-Headers. – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Chyba  Access-Control-Allow-Headers. – JavaScript, AJAX, jQuery – Fórum – Programujte.comChyba Access-Control-Allow-Headers. – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
marioDD0
Newbie
1. 3. 2021   #1
-
0
-

Zdravím. Našel by se tady nějaký programátor, který by mi byl ochoten poradit s chybou při volání na API?

Jedná se o api platformy pro tvorba e-shopu. Potřebuji dostat výpis posledních sta objednávek, který se uloží jako proměnná "y". Kód funguje, ale ne v prohlížeči. Pokud tento kód uložíte jako html a spustíte, konzola vám vyhodí chybu Access-Control-Allow-Headers. Netuším co s tím budu vděčný za každou radu. Předem děkuji.

<script src="./request.js"></script>
<script>
let x;
let y;
request({
method: 'POST',
url: 'https://api.webareal.cz/login',
headers: {
'X-Wa-api-token': 'token'
},
body: "{ \"username\": \"jmeno\", \"password\": \"heslo\"}"
}, function (error, response, body) {
x = body.substring(10, 1237);
getdata();
});
function getdata(){
request({
method: 'GET',
url: 'https://api.webareal.cz/orders?limit=100&sortBy=id&offset=10',
headers: {
'X-Wa-api-token': 'token',
'Authorization': `Bearer ${x}`,
}}, function (error, response, body) {
y = JSON.parse(body);
console.log(y);
});
}
</script>
Nahlásit jako SPAM
IP: 37.48.1.–
gna
~ Anonymní uživatel
1891 příspěvků
1. 3. 2021   #2
-
0
-

Když se připojuješ na jinou doménu (cross origin), tak prohlížeč nejdříve pošle "preflight request", ve kterém cíl požádá o svolení; řekne co se chystá poslat a zkontroluje, co je server ochoten přijmout.

Je to OPTIONS request a měl by být vidět v nástrojích pro vyvojáře. Tak se podívej, co ti tam lítá.

Nahlásit jako SPAM
IP: 213.211.51.–
marioDD0
Newbie
1. 3. 2021   #3
-
0
-

#2 gna
díky. Díval jsem se do nástrojů a našel jsem že první request byl úspěšný a druhý mi hlásí CORS(cross origin) error, ale pořád nevím co s tím. Napadá mě přidat nějaký header k druhému requestu.

Nahlásit jako SPAM
IP: 37.48.1.–
gna
~ Anonymní uživatel
1891 příspěvků
1. 3. 2021   #4
-
0
-

Já nevím, jak to mají implementované, ale typicky se u preflightu neřeší, jestli něco chybí. Spíš posíláš něco, co oni nedovolují. A podle dokumentace to máš asi správně. Podívej se na detail toho OPTIONS, co je v dotazu a co v odpovědi. Dost možná to záměrně nemá fungovat přes web.

Access-Control-Request-Headers
Access-Control-Allow-Headers
Nahlásit jako SPAM
IP: 213.211.51.–
marioDD0
Newbie
1. 3. 2021   #5
-
0
-

#4 gna
odpověď je prázdná. Jediné co vidím jsou moje headry a čas. Takže myslíš, že to nepůjde?

Nahlásit jako SPAM
IP: 37.48.1.–
gna
~ Anonymní uživatel
1891 příspěvků
1. 3. 2021   #6
-
0
-

Když login funguje, tak by asi měl fungovat i zbytek. Nevím.

Já se přes login nedostanu, tak orders nevyzkouším.

Nahlásit jako SPAM
IP: 213.211.51.–
marioDD0
Newbie
1. 3. 2021   #7
-
0
-

#6 gna
jasne. Zkouším to teď přepsat za použítí XLMHttpRequestu přesně tak jak mají v dokumentaci. Vrací mi chybu Origin null is not allowed by Access-Control-Allow-Origin. a to u loginu i u orders. Testuju z lokálního souboru, nemám spuštěný web server.

Nahlásit jako SPAM
IP: 37.48.1.–
gna
~ Anonymní uživatel
1891 příspěvků
1. 3. 2021   #8
-
0
-

On se vlastně login indikuje jen tím tokenem, takže na tom asi nesejde.

A jinak mi to vrací toto:

Access-Control-Allow-Headers: DNT, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Content-Type, Cache-Control, X-Wa-api-token, X-Wa-ssid
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin: *

Takže není povolená ta hlavička Authorization.

Nahlásit jako SPAM
IP: 213.211.51.–
marioDD0
Newbie
1. 3. 2021   #9
-
0
-

#8 gna
Ale bez ní to hlásí chybu že dotaz musí obsahovat header Authorization a mají ji i v dokumentaci.

Nahlásit jako SPAM
IP: 37.48.1.–
gna
~ Anonymní uživatel
1891 příspěvků
1. 3. 2021   #10
-
0
-

#9 marioDD
Jo, podle dokumentace to máš správně. To je na tom to divné, proč to přes wen funguje jen na půl (login a pak nic).

Nahlásit jako SPAM
IP: 213.211.51.–
marioDD0
Newbie
1. 3. 2021   #11
-
0
-

#10 gna
ještě divnější je že když to napíšu v node.js a spustím na repl.it(online IDE) tak mi to funguje úplně v pořádku 

Nahlásit jako SPAM
IP: 37.48.1.–
gna
~ Anonymní uživatel
1891 příspěvků
1. 3. 2021   #12
-
0
-

A neběží repl.it na serveru, takže se tam prohlížečový CORS vůbec neřeší?

Ono jako dává smysl, aby to nefungovalo. Mít přihlašovací údaje někde ve skriptu na potenciálně veřejném webu je samozřejmě nesmysl, ale pokud tomuhle chtějí zabránit, tak bych čekal, že nebude fungovat ani ten login.

Nahlásit jako SPAM
IP: 213.211.51.–
marioDD0
Newbie
1. 3. 2021   #13
-
0
-

#12 gna
ale jde mi o to, že by ten server neměl přijímat hlavičku Authorization vůbec, ale z node.js je to v pořádku.

Nahlásit jako SPAM
IP: 37.48.1.–
gna
~ Anonymní uživatel
1891 příspěvků
1. 3. 2021   #14
-
+1
-
Zajímavé

To neznamená, že server tu hlavičku nepřijímá, ale že nechce, aby prohlížeč požadavky s touto hlavičkou dovolil. Serverový node.js na acces-control asi kašle a nejspíš preflight vůbec nedělá.

Nahlásit jako SPAM
IP: 213.211.51.–
Řešení
marioDD0
Newbie
1. 3. 2021   #15
-
0
-
Vyřešeno Nejlepší odpověď

#14 gna

aha. Takže není možné udělat webovou aplikaci v javascriptu s tímhle API?

Nahlásit jako SPAM
IP: 37.48.1.–
gna
~ Anonymní uživatel
1891 příspěvků
1. 3. 2021   #16
-
0
-

V téhle formě si myslím, že to nepůjde, ale jestli máš v dokumentaci příklad s XHR, tak nějak jinak asi jo.

Nahlásit jako SPAM
IP: 213.211.51.–
MarioDD
~ Anonymní uživatel
35 příspěvků
1. 3. 2021   #17
-
0
-

#16 gna

Dobře ještě to zkusím přes XHR. Díky moc za pomoc a tvůj čas.

Nahlásit jako SPAM
IP: 37.48.1.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 21 hostů

Podobná vlákna

Brigáda MS Access, Access VBA — založil hejhula

Headers already sent by — založil JannyM

Precompiled headers — založil Peter D.

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý