Implementing Cross-Domain Requests in WebApi Using CORS with Angular's JSONP

Enabling CORS in WebApi for Cross-Domain Requests

Step 1: Install CORS in WebApi Project

Configure CORS globally in the Web API configuration file (Global.asax): ``` public class WebApiApplication : HttpApplication { protected void Application_Start() { #region Cross-Origin Resource Sharing var config = GlobalConfiguration.Configuration; var corsSettings = new EnableCorsAttribute("", "", "*"); config.EnableCors(corsSettings); #endregion AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); } }


### Step 2: Controller Configuration

Add the EnableCors attribute to your controllre: ```
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class MindmapController : ApiController
{
    // Controller implementation
}

Step 3: Response Implementation

Important: Do not return data as a plain string. If you do, the JSONP callback will not be recognized and the success handler will never execute. This is a common issue when using Angular's $http with JSONP. Implementation 1 - Using HttpResponseMessage: ``` public HttpResponseMessage FetchMindData(int? companyId, int? parentNode, string callback) { var dataModel = new object();

return new HttpResponseMessage(HttpStatusCode.OK)
{
    Content = new StringContent(
        callback + "(" + JsonConvert.SerializeObject(dataModel) + ")",
        Encoding.UTF8,
        "text/plain"
    )
};

}


Implementation 2 - Using MVC's JavaScriptResult: ```
public JavaScriptResult FetchMindData(int? companyId, string callback)
{
    object dataModel = new object();
    dataModel.root = companyData;
    string jsonpPayload = callback + "(" + JsonConvert.SerializeObject(dataModel) + ")";
    
    return JavaScript(jsonpPayload);
}

Step 4: Frontend Implementation

Angular controller for JSONP requests: ``` angular.module('mindmapApp', ['kityminderEditor']) .controller('MainController', function ($scope, $http, $sce) {

    $scope.initializeEditor = function (editor, minder) {
        window.currentEditor = editor;
        window.currentMinder = minder;
        
        var apiEndpoint = "https://example.com/api/minddata?callback=JSON_CALLBACK";
        
        $sce.trustAsResourceUrl(apiEndpoint);
        $http.jsonp(apiEndpoint)
            .success(function (result) {
                console.log(result);
                window.currentEditor.minder.importData('json', JSON.stringify(result));
            })
            .error(function (error) {
                console.log(error);
            });
    };
});

### Alternative: jQuery JSONP Implementation

$.ajax({ url: apiEndpoint, type: 'GET', dataType: 'jsonp', jsonp: 'callback', jsonpCallback: 'handleResponse' });

window.handleResponse = function (responseData) { console.log(responseData); };

Tags: ASP.NET Web API cors AngularJS JSONP Cross-Domain Requests

Posted on Fri, 07 Aug 2026 16:47:45 +0000 by tacojohn