cross-domain-Beiträge zu ASP.Net MVC-app
Bin ich, eine app zu entwickeln, in denen HTML-und javascript-Blöcken geliefert auf verschiedene clients. Ich bin in der Lage, um die html - /javascript-Blöcken, indem Sie die folgenden web-config-Datei:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS" />
</customHeaders>
</httpProtocol>
Diese Funktionsweise ist ideal für tun BEKOMMT. Das problem, ich bin mit in die tut-POSTs cross-domain Verwendung von jQuery:
$.ajax(
{
type: 'POST',
url: url,
crossDomain: true,
data: JSON.stringify(data),
dataType: 'json',
contentType: 'application/json',
success: function(responseData, textStatus, jqXHR)
{
alert('Success');
},
error: function (responseData, textStatus, errorThrown)
{
alert('POST failed.');
}
});
Habe ich zahlreiche Kunden das konsumieren meiner app (hoffentlich). Ich dachte über die Verwendung von einem proxy, aber ich habe keine Kontrolle über den client-Server, also bin ich nicht in der Lage, installieren Sie einen httpHandler zu vertreten.
Irgendwelche Vorschläge, wie ich einstellen können, die json-Daten von verschiedenen clients, cross-domain auf meine ASP.Net MVC-app?
InformationsquelleAutor Tom Schreck | 2012-01-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich fummelte mit meiner ajax-Aufrufs, und es scheint zu funktionieren (im Vergleich zu den ajax-Aufruf oben):
Habe ich entfernt, "contentType: 'application/json'" und "JSON.stringify(...)" nennt und ich bin in der Lage post an den server.
Ich bin mir nicht sicher, wie zu erklären, warum es funktioniert. Irgendwelche Ideen? Gibt es irgendwelche Sicherheitsprobleme? Ich mache diese alle auf meinem laptop. Richte ich 2 verschiedene websites, die über IIS 7. Wird das einen Unterschied machen?
InformationsquelleAutor Tom Schreck
Intern die JSONP-Antwort (der Standard-Typ für cross-domain-requests) geholt wird, durch die Injektion eines
<script>
tag, der auf die URL. Weil das so ist, nurGET
Methode möglich ist, mit JSONP. Die anderen Methoden werden ignoriert und fallen zurückGET
.InformationsquelleAutor Petr Vostrel
Wenn Sie angegeben haben, die crossDomain-Eigenschaft auf "true", wird der dataType-Eigenschaft festgelegt wird, als jsonp. Sie müssen einen Weg, um diese zu bewältigen jsonp jedoch auf der MVC-Seite. Möchten Sie vielleicht einen Blick auf die folgenden stackoverflow-post: ASP.net MVC Rückkehr JSONP
InformationsquelleAutor Andy Cohen
haben Sie zwei Möglichkeiten, den Datentyp, den Sie können einen text oder jsonp anstelle von json. und wenn Sie uns Beispiel und die Daten, die Ihr senden, das ist einfacher .
Hinsichtlich
InformationsquelleAutor Raul
Wenn Sie die Kontrolle haben über das, was JS-Bibliotheken, die Sie beinhalten, ist der beste Weg, um die Verwendung eines der vielen cross-domain-Kommunikation-Bibliotheken. Der client (MVC-app in deinem Fall), wird es so konfiguriert, dass solche Anfragen in den meisten Fällen bedeutet dies, dass es die gleiche lib auf der Annahme Seite.
Die beste, die ich gefunden, so weit ist EasyXDM. Nicht viele Einschränkungen und passt sich selbst an-browser-Fähigkeiten. Aber Sie haben es auf beide apps miteinander zu reden.
InformationsquelleAutor root