Dismiss
Announcing Stack Overflow Documentation

We started with Q&A. Technical documentation is next, and we need your help.

Whether you're a beginner or an experienced developer, you can contribute.

Sign up and start helping → Learn more about Documentation →

I have simple website I'm building with AngularJS which calls an API for json data.

However I am getting Cross domain origin problem is there anyway around this to allow for cross domain requests?

Error:

XMLHttpRequest cannot load http://api.nestoria.co.uk/api?country=uk&pretty=1&action=search_listings&place_name=soho&encoding=json&listing_type=rent. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http:// localhost' is therefore not allowed access.

  searchByPlaceName: function() { 
        var url = baseurl+'country=uk&pretty=1&action=search_listings&place_name=london'+encoding+type;
         return $http.get(url);
    }
share|improve this question
    
It is up to api.nestoria.co.uk to allow CORS – Explosion Pills Mar 20 '14 at 22:11
up vote 12 down vote accepted

It seems that api.nestoria.co.uk does not allow CORS. It has to set the Access-Control-Allow-Origin header itself -- you have no direct control over that.

However, you can use JSONP. That site allows it via the callback query parameter.

$http.jsonp(baseurl+'country=uk&pretty=1&action=search_listings&place_name=london'
    +encoding+type + "&callback=JSON_CALLBACK")
share|improve this answer
5  
you need to supply a callback function to jsonp. $http.jsonp(url+"&callback=JSON_CALLBACK").success(function(‌​data) { console.log(data); }); – huocp Mar 20 '14 at 23:15
    
@huocp, your comment makes sense... However, I'm still getting the error Tom mentioned "Uncaught SyntaxError" – Michael Merchant Dec 12 '14 at 22:03
    
@Tom change the API response format to JSONP as well. :) – bwaaaaaa Feb 16 '15 at 11:11
    
@Explosion Pills If i used JSONP the response is not coming as JSON format . it's in the form js file in response – karthik pamidimarri Feb 24 '15 at 6:54

Install Fiddler. Add a custom rule to it:

static function OnBeforeResponse(oSession: Session)
{
    oSession.oResponse.headers.Add("Access-Control-Allow-Origin", "*");
}

This would allow you to make cross domain requests from localhost. If the API is HTTPS make sure you enable 'decrypt HTTPS traffic' in fiddler.

Reference

-------------------- UPDATE

The response you are getting is JSON. Specifying JSONP as datatype would not work. When you do specify JSONP the return should be a function not JSON object.

JSONP

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.