ich hab einen Webservice in C# geschrieben, der 3 Webmethoden zur Verfügung stellt. Wenn ich den Service im Browser aufrufe funktioniert er tadellos.
Sobald ich aber den Service über Javascript aus einer HTML Seite aufrufe, bekommen ich den Fehler "Zugriff verweigert".
var req = null; try { req = new XMLHttpRequest(); } catch (ms) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (nonms) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (failed) { req = null; } } }
if (req == null) alert("Error creating request object!");
req.open("GET", curUrl, true);
Der Webserver der HTML Seite und der des Webservice sind 2 verschiedene. Beider befinden sich aber in der selben Domäne. Google hilft bisher nur in sofern weiter, dass aufgrund von Security Policies kein Domain-übergreifender Zugriff erfolgen darf. Das ist m.M.n. hier ja aber nicht der Fall, oder!?
Hat sich erledigt, das ganze funktioniert natürlich auch nur, wenn die HTML Seite auch auf dem Webserver und nicht im Filesystem aufgerufen wird... Wie war das nochmal mit dem Wald und den Bäumen? ;)
Wenn du mit Domain die Windows Domain meinst (ADS) dann folgendes:
Das Problem ist das es den Browser nicht interessiert ob die Server in der selben Windows-Domain sind sondern nur ob Sie die selbe Second-Level-Domain (DNS) haben. ADS-Domains und DNS-Domains haben nichts mit einander zu tun.
Ganz abgesehen davon gibt es folgende Lösungsmöglichkeiten.
Für JSONP ("JSON with padding") gelten die Same Origin Policys nicht.
Flash-Proxy (die WS-Requests werden nicht von AJAX sondern übers Flash gemacht)
ASPX/ASMX-Proxy (die WS-Requests werden von einer Webseite auf dem eigenen (in deinem Fall der Webserver) Server gemacht und im Anschluss zurückgereicht)