Problem Statement
When working with AngularJS and Web API this issue can be seen. Lets create a sample Web API and AngularJS project to reproduce this issue and lets find the solution to this as well.
Demo
First create a sample Web API project and add - "ProductController.cs" file -
public class ProductController : ApiController { private List_products; public ProductController() { _products = new List () { new Product() { ProductId = 1, CategoryId=100, ProductName ="Prod1"}, new Product() { ProductId = 2, CategoryId=100, ProductName ="Prod2"}}; } // GET api/product public List Get() { return _products; } // GET api/product/5 public Product Get(int id) { return _products.First(a => a.CategoryId == id); } // POST api/product public void Post([FromBody]Product prod) { _products.Add(prod); } }
Now lets create a sample html page for AngularJS application. Here lets main concentrate on the service part, which is doing a AJAX call to the Web API service -
myApp.service('sampleService', function ($http) { this.getProducts = function () { return $http.get('http://localhost:53308/api/Product/'); // Different domain call. } });
As we can see in the above code. Web API running in the different domain than the client application. Below is the screenshot of error -
Solution
As a part of solution add the "<customHeaders>" tag to web config like below -
<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="GET, POST, PUT, DELETE, OPTIONS" /> </customHeaders> </httpProtocol>
Hope this post is useful. Please put your thoughts in the comment section below.
No comments:
Post a Comment
Comments Section