Permalänk
Medlem

Ajax POST till extern domän

Hej folket.
Är farligt nära ett sammanbrott då jag suttit i 3 dagar och försökt fixa mitt problem.

Har en mobilenhet med en installerad webapp som skall kommunicera med en asmx webservice.
Detta har jag löst via Ajax där jag kör Type: GET och dataType: jsonp.
Detta fungerar klockrent förutom att GET har en begränsning på hur lång URL:en kan vara. Vilket då självklart ställer till problem om det är mycket data som skall skickas.

Om jag istället skall köra type: POST råkar jag ut för "Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:49323/WebService.asmx/Test. This can be fixed by moving the resource to the same domain or enabling CORS.".

Min config för webservicen innehåller följande skit nu:

<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="origin, x-requested-with, Content-Type" /> <add name="Access-Control-Request-Method" value="POST" /> <add name="Access-Control-Request-Headers" value="X-Requested-With, accept, Content-Type" /> <add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS" /> </customHeaders> </httpProtocol> </system.webServer>

Någon som har en riktning att styra mig i? Tack!!

Permalänk

Vilken webb-server la du in detta i? Local eller remote?

Permalänk
Medlem

Har testat i båda!

Permalänk
Medlem

Man kan inte POSTa med JSONP!
jsonp insertar en <script> tag som måste vara GET.

hur lång blir GET urlen?

Permalänk
Medlem
Skrivet av siaw:

Man kan inte POSTa med JSONP!
jsonp insertar en <script> tag som måste vara GET.
hur lång blir GET urlen?

Jag kör inte POST med jsonp, försöker med vanlig json.
GET med jsonp fungerar, som jag skriver. Men med 2-4k limit för chars i URLen kan min sträng teoretiskt bli för lång då det är mycket data som lär skickas. Och inte bara i teorin, utan även i praktiken har det uppstått nu. Därför jag försöker bygga om lösningen

Permalänk
Medlem

Ditt första inlägg antyder att du kör IIS, så då kanske detta är av intresse?
http://www.iis.net/configreference/system.webserver/security/...

Citat:

maxQueryString
Optional uint attribute.
Specifies the maximum length of the query string, in bytes.
The default value is 2048.

maxUrl
Optional uint attribute.
Specifies maximum length of the URL, in bytes.
The default value is 4096.

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem
Skrivet av jovnas:

Ditt första inlägg antyder att du kör IIS, så då kanske detta är av intresse?
http://www.iis.net/configreference/system.webserver/security/...

Intressant! Det bör lösa problemet på serversidan.
Dock är jag osäker med klienten? Jag menar, har du en web app så använder den ju "browsern". Och då bör väl även sändarn ha browserns limit? Som jag fattat det är det inget man kommer runt. Skall göra ett test nu

Edit: 414 URI Too Long fortfarande.. :/
Rent spontant känns det som att det bara är att försöka glömma GET och använda POST för det är mer lämpat när det är stora mängder data. Men konstigt att man kör fast på ett cross-domain error. Liksom, detta är ju en rätt generell lösning men många verkar ha problem med det.

Permalänk
Medlem

JSONP fungerar inte med POST... http://en.wikipedia.org/wiki/JSONP

Ett sätt att kringå detta kunde vara att dela upp det som ska skickas till flera mindre eller POSTa till den lokala servern och låta den vidarebefodra POSTen till den andra servern.

Permalänk
Medlem

Hej igen siaw. Som sagt, använder inte jsonp med POST
Ja, jag har tänkt ut en lösning nu så jag skickar allt i batcher istället. Blir några ms längre kommunikation men det får man leva med i det här fallet.

Ang. lokala servern. De mobila enheterna är uppkopplade på ett lokalt nätverk. I det lokala nätverket finns en koppling mot ett intranät där servern står. Så har inte något att använda som mellanlänk

Permalänk
Medlem
Visa signatur

RIPE LIR

Permalänk
Medlem

Hör och häpna. Jag gav mer eller mindre upp och tänkte revert:a mina settings och dela upp min dataskeppning i flera GET requests. Men när jag började pilla bort lite av inställningarna jag gjort samt starta om servern - Då hoppa skiten igång :s

Så, nu fungerar POST. Den går in i Web Servicen, gör sin grej. Men sedan när den skall skicka response kommer Cross-domain erroret igen och svaret är tomt av någon anledning. Misstänker att det är något med response headern.
Egentligen behöver jag inget svar från servern. Men det vore ju rätt bra att undvika 2000-talets största fulkodning och inte fånga upp svaret att allt gick bra

Tack för er hjälp. Jag får se hur jag går vidare.

Permalänk
Medlem

Nu fungerar skiten mot servern.
Problemet jag beskrev ovan var mot min localhost som jag inte konfat, därför svaret hade svårt att hanteras.

Jag önskar jag kunde i detalj förklara hur jag löste problemet utifall fler råkar ut för det. Men kortfattat har jag en webconfig med de vanligaste workaroundsen, samt pillat lite i själva IIS:en med tips från nätet. Vad minns jag ej och jag är på tok för lättad att ens kolla upp det.

Ikväll blir det singel malt. Tack och godnatt