Dies war die erste Frage/Antwort, die für mich aufpoppte, als ich versuchte, das gleiche Problem mit ASP.NET MVC als Datenquelle zu lösen. Mir ist bewusst, dass dies die PHP Frage nicht löst, aber es ist verwandt genug, um wertvoll zu sein.
Ich benutze ASP.NET MVC. Der Blog-Beitrag von Greg Brant hat bei mir funktioniert. Letztendlich erstellen Sie ein Attribut, [HttpHeaderAttribute("Access-Control-Allow-Origin", "*")]
, das Sie zu Controller-Aktionen hinzufügen können.
Zum Beispiel:
public class HttpHeaderAttribute : ActionFilterAttribute
{
public string Name { get; set; }
public string Value { get; set; }
public HttpHeaderAttribute(string name, string value)
{
Name = name;
Value = value;
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.HttpContext.Response.AppendHeader(Name, Value);
base.OnResultExecuted(filterContext);
}
}
Und dann verwenden Sie es mit:
[HttpHeaderAttribute("Access-Control-Allow-Origin", "*")]
public ActionResult MyVeryAvailableAction(string id)
{
return Json( "Einige öffentliche Ergebnisse" );
}
20 Stimmen
Beim Verwenden von jQuery, sorgt
dataType: 'jsonp',
für den gewünschten Effekt11 Stimmen
Übrigens ist das nicht die Antwort vom Server. Genauer gesagt wird dieser Fehler auf der Client-Seite angezeigt.
2 Stimmen
Der jsonp-Trick funktioniert wahrscheinlich nicht mehr, fyi: stackoverflow.com/questions/12216208/…
8 Stimmen
Hinweis, da ich gerade einen halben Tag damit verschwendet habe, diesen Fehler zu verfolgen - Wenn das Server-Seiten-Skript mit einem internen Serverfehler fehlschlägt, könnte der Browser dies möglicherweise so interpretieren, als wäre die Anfrage aufgrund von
Access-Control-Allow-Origin
nicht zulässig und dies als Fehler melden.1 Stimmen
Es gibt eine Erweiterung dafür!