Wij zijn afgelopen week gigantisch veel tijd kwijt geraakt om het volgende:
Er is een WCF service die ik gebruik om een get en post te doen. Deze gets en posts gaan via jquery ajax. Met de gets hebben wij geen enkel probleem en dit gaat gewoon goed. Met de posts echter gebeurt er iets vreemds. In google chrome zie ik dat de Post door chrome wordt omgezet naar OPTION. Na wat googlen kwamen wij erachter dat Chrome een preflight doet en dat dit er dan voor zorgt dat het geen POST wordt maar een OPTION. Dit komt dan weer door CORS. Het zoeken naar CORS en bijbehorende fenomeen geeft ons ontzettend veel resultaat van soortgelijke problemen maar niks lijkt te helpen.
Onze web.config is aangepast zodat deze het volgende heeft:
De ajax post die wij doen is:
Wij hebben nu ondertussen heel veel geprobeerd maar niks werkt. Onder andere hebben wij een nieuwe webservice gemaakt die simpel 1 str accepteert en verder niets doet maar ook dit werkt niet. De ajax post hebben wij op verschillende plekken aangepast bijvoorbeeld de contenttype.
Het vreemde is dat wanneer ik de output van var plaap kopieer en gebruikt in google chromes extentie "advanced REST client" deze wel gewoon werkt. Google CHROME maakt er dan wel gewoon een POST van ipv OPTION. Ook wanneer ik mijn pagina in de zelfde webroot zet als de webservice dan doet deze het wel. Dit is echter geen optie gezien de webservice op een heel andere plek draait dan de website.
Het lijkt dus iets met CORS te maken te hebben maar ik kan niet ontdekken wat wij nog meer kunnen doen dan de web.config zo aanpassen dat deze alles accepteert(wat wij dus al hebben gedaan).
Iemand een idee?
Er is een WCF service die ik gebruik om een get en post te doen. Deze gets en posts gaan via jquery ajax. Met de gets hebben wij geen enkel probleem en dit gaat gewoon goed. Met de posts echter gebeurt er iets vreemds. In google chrome zie ik dat de Post door chrome wordt omgezet naar OPTION. Na wat googlen kwamen wij erachter dat Chrome een preflight doet en dat dit er dan voor zorgt dat het geen POST wordt maar een OPTION. Dit komt dan weer door CORS. Het zoeken naar CORS en bijbehorende fenomeen geeft ons ontzettend veel resultaat van soortgelijke problemen maar niks lijkt te helpen.
Onze web.config is aangepast zodat deze het volgende heeft:
XML:
1
2
3
4
5
| <customHeaders> <add name="Access-Control-Allow-Origin" value="*"/> <add name="Access-Control-Allow-Methods" value="*"/> <add name="Access-Control-Allow-Headers" value="Content-Type" /> </customHeaders> |
De ajax post die wij doen is:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| var plaap = '{"RegistrationDetails": ' + strFinalObj + '}'; console.log(plaap); //json output jQuery.support.cors = true; //was een test $.ajax({ type: "POST", url: APIregistration, data: plaap, contentType:"application/json", dataType: "json", success: function (msg) { console.log(msg); }, error: function (xhr, ajaxOptions, thrownError) { console.log(xhr.status); } }).fail( function (msg) { console.log(msg); }); |
Wij hebben nu ondertussen heel veel geprobeerd maar niks werkt. Onder andere hebben wij een nieuwe webservice gemaakt die simpel 1 str accepteert en verder niets doet maar ook dit werkt niet. De ajax post hebben wij op verschillende plekken aangepast bijvoorbeeld de contenttype.
Het vreemde is dat wanneer ik de output van var plaap kopieer en gebruikt in google chromes extentie "advanced REST client" deze wel gewoon werkt. Google CHROME maakt er dan wel gewoon een POST van ipv OPTION. Ook wanneer ik mijn pagina in de zelfde webroot zet als de webservice dan doet deze het wel. Dit is echter geen optie gezien de webservice op een heel andere plek draait dan de website.
Het lijkt dus iets met CORS te maken te hebben maar ik kan niet ontdekken wat wij nog meer kunnen doen dan de web.config zo aanpassen dat deze alles accepteert(wat wij dus al hebben gedaan).
Iemand een idee?
Dying is God's way of telling you, you've been FIRED.