Ma saan selle vea, kasutades ngResource'i, et kutsuda REST API-d Amazon Web Services'is:
XMLHttpRequest ei saa laadida. http://server.apiurl.com:8000/s/login?login=facebook. Vastus eellennu taotlus ei läbinud juurdepääsu kontrollimist: No 'Access-Control-Allow-Origin' päis on taotletaval dokumendil olemas ressursil. Päritolu 'http://localhost' ei ole seega lubatud. Viga 405
Teenus:
socialMarkt.factory('loginService', ['$resource', function($resource){
var apiAddress = "http://server.apiurl.com:8000/s/login/";
return $resource(apiAddress, { login:"facebook", access_token: "@access_token" ,facebook_id: "@facebook_id" }, {
getUser: {method:'POST'}
});
}]);
Kontroller:
[...]
loginService.getUser(JSON.stringify(fbObj)),
function(data){
console.log(data);
},
function(result) {
console.error('Error', result.status);
}
[...]
Ma'kasutan Chrome'i ja ma ei tea, mida veel teha, et seda probleemi lahendada. Ma'olen isegi konfigureerinud serveri aktsepteerima päiseid päritolust localhost
.
Teil on CORSi probleemid.
Selle lahendamiseks/ümberlülitamiseks on mitu võimalust.
Pikemalt öeldes püüate localhostilt pääseda ligi api.serverurl.com-le. See on täpne domeeniülese päringu määratlus.
Kas lülitades selle lihtsalt välja, et saada oma tööd teha (OK, paneb halva turvalisuse teile, kui külastate teisi saite ja lihtsalt lööb purgi alla), võite kasutada proxy, mis paneb teie brauseri arvama, et kõik päringud tulevad kohalikult hostilt, kui tegelikult on teil kohalik server, mis siis kutsub kaugserverit.
nii et api.serverurl.com võib saada localhost:8000/api ja teie kohalik nginx või muu proxy saadab õigesse sihtkohta.
Nüüd rahva nõudmisel 100% rohkem CORS-infot....sama hea maitse!
Ja downvoters.... jaoks on CORSi möödahiilimine just see, mida näidatakse neile, kes lihtsalt õpivad front endi. https://codecraft.tv/courses/angular/http/http-with-promises/
Minu "API Server" on PHP Application nii et selle probleemi lahendamiseks leidsin allpool lahendus töötada:
Paigutage read index.php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
Python flask server, saate kasutada flask-cors plugin, et võimaldada cross-domeeni taotlusi.