Provo a effettuare una chiamata POST da un client javascript a un'API di foursquare chiamata addvenue. Questo è l'endpoint API documentation link.
Ma il server restituisce 405 - Metodo non consentito. Ecco lo snippet che effettua la chiamata
var postdata = {'oauth_token':$scope.access_token_foursquare,
'v':'20141217','name':'randomlisting',
'll':'44.3,37.2','m':'foursquare'};
var req = {
method: 'POST',
url: 'https://api.foursquare.com/v2/venues/add',
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
data: postdata
}
$http(req).then(function(response){
console.log(response);
});
Di seguito è riportato il pacchetto di richiesta e risposta per la chiamata precedente.
Remote Address:103.245.222.185:443
Request URL:https://api.foursquare.com/v2/venues/add
Request Method:OPTIONS
Status Code:405 Method Not Allowed
**Request Headers**
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:accept, authorization, content-type
Access-Control-Request-Method:POST
Connection:keep-alive
Host:api.foursquare.com
Origin:http://localhost:9000
Referer:http://localhost:9000/foursquare
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36
**Response Headers**
Accept-Ranges:bytes
Access-Control-Allow-Origin:*
Connection:Keep-Alive
Content-Length:90
Content-Type:application/json; charset=utf-8
Date:Wed, 17 Dec 2014 12:15:15 GMT
Keep-Alive:timeout=10, max=50
Server:nginx
Tracer-Time:1
Via:1.1 varnish
X-Cache:MISS
X-Cache-Hits:0
X-Served-By:cache-sn87-SIN
Ho studiato anche sul problema CORS. Nel mio caso il server sta permettendo tutte le origini, come si vede nelle intestazioni di risposta. Sono rimasto colpito da questo problema e non ho potuto procedere oltre.
Qualsiasi aiuto sarebbe apprezzato. Grazie in anticipo.
Questo tipo di domanda si verifica tutti i giorni, forse questo sarà utile: http://stackoverflow.com/questions/19554414/angularjs-disabling-cors – Rasalom
Grazie per la risposta immediata. Ho provato quanto segue come menzionato nel link che hai fornito. 'angular.module ('yourModuleHere') .config (function ($ httpProvider) { delete $ httpProvider.defaults.headers.common ['X-Requested-With']; });' Ancora lo stesso problema persiste. – bala
Hai trovato la soluzione, per favore condividi – MohQut