Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!

Diskuze: Cors problem při ajax requestu na web service

Aktivity (4)
Avatar
skilledt
Člen
Avatar
skilledt:14. června 10:33

Zdravím, narazil jsem na zádrhel při získávání dat z webové služby pomocí ajax requestu. V rámci mé webové aplikace(psané v php, konrétně v codeigniteru + jquery), potřebuji získávat data z Asp net web service. Vše jsem nastavil a vyzkoušel lokálně a následně i na našem testovacím serveru. Tam jsem již narazil na problém s CORS, který se ale podařil vyřešit pouhým přidáním následujícího kódu do sekce custom headers, poté vše fungovalo.

<add name="Access-Control-Allow-Headers" value="accept, content-type" />
      <add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS" />

Při instalaci u klienta jsem však na problém opět narazil a nedaří se mi ho vyřešit. Konrétně prohlížeč při pokusu o získání dat zahlásí tyto chyby:

OPTIONS http://10.208.1.27/planws/Service.asmx 405 (Method Not Allowed)
Access to XMLHttpRequest at 'http://10.208.1.27/planws/Service.asmx' from origin 'http://localhost' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

Na tomto serveru jede IIS ve verzi 6, a přesto že jsem nastavil následující custom headers, nedaří se mi této chyby zbavit.

Access-Control-Allow-Headers: accept, content-type
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Origin: *

Má někdo zkušenosti s podobným problémem, případně nápad jak toto vyřešit? Váhal jsem jestli to patří spíš sem nebo do sekce javascriptu, ale zdá se že todle se spíš musí řešit na straně serveru, proto jsem to nakonec hodil do této sekce.

 
Odpovědět 14. června 10:33
Avatar
skilledt
Člen
Avatar
Odpovídá na skilledt
skilledt:14. června 10:43

Ještě dodám, že v případě že si otevřu tu kýženou webovou aplikaci v chromu s --disable-web-security parametrem, tak request proběhne bez problémů.

 
Nahoru Odpovědět 14. června 10:43
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:14. června 10:49

Dobry browser se brani CORSem. Cili, spravne ti to fungovat nesmi.

Nove vymysleli, ze kdyz kdyz tam pridas hash, tak by to mohlo stahnout.
https://developer.mozilla.org/…ce_Integrity

<script src="https://example.com/example-framework.js"
        integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
        crossorigin="anonymous"></script>

Jinak to samozrejme muzes obejit stazenim stranky do asp a vypsanim uzivateli. V php by to bylo

<?php $url='...'; echo file_get_contents($url); ?>

Timto zpusobem je ta stranka povazovana za tvou. Ale pak nemusi spravne fungovat linky a pod.

 
Nahoru Odpovědět  +1 14. června 10:49
Avatar
zelvicek
Člen
Avatar
Odpovídá na skilledt
zelvicek:14. června 11:51

Jak sleduji tebou založená témata, získávám dojem, že ses pustil do projektu, který je nad tvé síly. Především ve znalosti vývoje webových aplikací a také schopnosti hledat na netu. Zajímalo by mě, v které oblasti IT jsi skilled. Myslím, že bys měl najít někoho, kdo ti s vývojem tvé aplikace pomůže - ta investice by se určitě vyplatila.

Tipuju, že sis při sepisování smlouvy ani nezjistil, v jakém prostředí (a za jakých podmínek) má být aplikace provozována. Nenapadá mě, jak jinak ses dostal do stavu, kdy jsi "najednou" v den nasazení zjistil, že IIS bude verze 6. Těch překvapení může být v blízké budoucnosti více.

Ale k tématu. Chci věřit, že sis odchytil síťovou komunikaci mezi klientem a serverem, z čehož jsi pochopil, kde ta chybová hláška vzniká. Ta chybová hláška je celkem jasná 405-Method Not Allowed.
Doporučuji si nastudovat konfiguraci IIS6. Nebo alespoň hledat na internetu.

 
Nahoru Odpovědět  -1 14. června 11:51
Avatar
skilledt
Člen
Avatar
Odpovídá na zelvicek
skilledt:14. června 12:09

Nezjistil jsem to samozřejmě najednou, tento problém už řeším nějaký čas, jsem spíše frontenďák , backend na mě bohužel padl také, takže je fakt, že v IIS, kord v IIS6 nejsem tolik zběhlý.

Samozřejmě že jsem prohledal kde co, ale nic co by problém vyřešilo jsem nenašel - zkoušel jsem nastavit headery u odpovědi natvrdo, stejně tak u přípony asmx v nastavení povolit metodu OPTIONS vše bez úspěchu. Jinak je většina řešení pro verzi IIS7. Proto jsem se zkusil zeptat tady, jestli poradíš budu rád, ale jinak se mi zdá reakce ve stylu "je to jasný najdi si to" poměrně zbytečná a arogantní.

 
Nahoru Odpovědět  +1 14. června 12:09
Avatar
zelvicek
Člen
Avatar
Odpovídá na skilledt
zelvicek:14. června 12:29

Ano, můj příspěvek je trochu arogantní. Považuji ovžem za aroganci z tvé strany fakt, že jsi nepopsal tebou vyzkoušené kroky již při zadání tématu. Z informací dodaných v předchozím příspěvku je patrné, které kroky jsi učinil, ostatní o nich již nemusí uvažovat a rovnou je vyloučit.

Musím připustit, že neznám další kroky, které by problém vyřešily a bez přístupu k danému IIS nejsem schopen více poradit.

 
Nahoru Odpovědět 14. června 12:29
Avatar
zelvicek
Člen
Avatar
Odpovídá na skilledt
zelvicek:14. června 12:54

Ještě jedna věc. Nepíšeš, že jsi zkontroloval logy IIS - jsi si jistý, že ty OPTIONS requesty na něj dorazí? Nebylo by poprvé, kdy má zákazník prudce inteligentní proxy, která něco odfiltruje.

 
Nahoru Odpovědět 14. června 12:54
Avatar
skilledt
Člen
Avatar
Odpovídá na zelvicek
skilledt:14. června 13:19

V pohodě, je fakt, že jsem to uvést mohl, tak snad aspoň takhle jsem to dodatečně doplnil. Díky za tip, do logů jsem mrknul a OPTIONS request dorazí, dál už nic.

 
Nahoru Odpovědět 14. června 13:19
Avatar
Odpovídá na skilledt
don.jarducius:Včera 14:59

Ahoj, v tom případě ale prohlížeči nedorazí správná odpověď... Zkontroluj si konzoli a síť v prohlížeči co dostaneš od serveru. Případně pak zkus na IIS volat jinou stránku (ne asmx) jestli ti dorazí cors hlavičky v odpovědi.

 
Nahoru Odpovědět Včera 14:59
Avatar
Odpovídá na skilledt
don.jarducius:Včera 15:04

Ještě se ve webconfigu podívej, jestli máš povolené httpoption v protokolech... Aby server věděl, že na to má vůbec nějak reagovat.

 
Nahoru Odpovědět Včera 15:04
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.