De acuerdo a wikipedia, nos dice que CORS es un mecanismo para restringir recursos entre dominios.
CORS, presente en el desarrollo de software hace unos días:
Requerimiento: Se tiene una ruta http://aaa.com/ que quiere consumir datos a través de ajax de la ruta http://bbb.com/get/datos. Este trabajo se debe realizar a nivel del Frontend.
Bueno, del lado del dominio A tenemos que realizar una llamada utilizando una función de angular.
$http.jsonp('http://bbb.com?callback=JSON_CALLBACK¶ms1=' + 1 + '¶ms2=' + 2).
success(function(data) {
console.log("data >>>", data);
}).
error(function (err) {
console.log("error >>>", err);
});
Ahora del lado B, trabajamos en el backend para permitir la salida de datos. Para ello primero implementamos la siguiente clase:
using System.Web.Script.Serialization;
public class JsonpResult : JsonResult
{
object data = null;
public JsonpResult()
{
}
public JsonpResult(object data)
{
this.data = data;
}
public override void ExecuteResult(ControllerContext controllerContext)
{
if (controllerContext != null)
{
HttpResponseBase Response = controllerContext.HttpContext.Response;
HttpRequestBase Request = controllerContext.HttpContext.Request;
string callbackfunction = Request["callback"];
if (string.IsNullOrEmpty(callbackfunction))
{
throw new Exception("Callback function name must be provided in the request!");
}
Response.ContentType = "application/x-javascript";
if (data != null)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
Response.Write(string.Format("{0}({1});", callbackfunction, serializer.Serialize(data)));
}
}
}
}
En nuestro controlador instanciamos la clase antes creada.
public class equisController : Controller
{
public JsonResult getDatos()
{
CodeFirst context = new CodeFirst();
List q = context.ModelEquis.toList();
JsonpResult result = new JsonpResult(q);
return result;
}
}
Al final podemos comprobar que la data es transmitida y podemos mostrarlo en un gustoso "console.log"









