2014-07-06 32 views
5

Stavo cercando di accedere a API in esecuzione in localhost usando angular $ resourses, la console di chrome mi dà errore dicendo ERR_INSECURE_RESPONSE.Errore durante l'accesso a localhost api in chrome net :: ERR_INSECURE_RESPONSE

Ho provato a disabilitare la sicurezza Web in chrome. ancora lo stesso errore. ecco la fabbrica angolare che ho usato. Come posso evitare questo errore e testare la mia app.

ImpactPortal.factory('apiFactory', function ($resource) { 
    return $resource('https://localhost:8443/mifosng-provider/api/v1/client_impact_portal', {}, { 
     query: { 
      method: 'GET', 
      params: {}, 
      isArray: true 
     } 
    }) 
}); 
+0

Qual è la risposta che stai cercando di ricevere? – haimlit

+0

Stai usando un certificato SSL valido, firmato da una CA? –

+0

È necessario implementare il certificato SSL nel server Web per l'URL del progetto. –

risposta

1

È necessario prima autenticarsi e quindi inviare ciascuna richiesta insieme al token di autenticazione.

Sto usando RestAngular, quindi le mie impostazioni potrebbero sembrare leggermente diverse da quelle su cui stai lavorando.

Questo andrà nella configurazione dell'applicazione: -

RestangularProvider.setDefaultHeaders({ 'X-Mifos-Platform-TenantId': 'default' }); 

e qualcosa come questo andrà nel controller/servizio

var login = Restangular.all('authentication?username=mifos&password=password').post().then(function(user) { 
    console.log(user); 
}, function() { 
    console.log("There was an error saving"); 
}); 
+0

Non basta passare il nome utente e la password in ogni richiesta del genere .. utilizzare una JWT o qualcos'altro. – Juan

-2

Errore 501 (net :: ERR_INSECURE_RESPONSE) - 501 Non implementato

Il server o non riconosce il metodo di richiesta, oppure manca la capacità di soddisfare la richiesta. Di solito ciò implica disponibilità futura (ad esempio, una nuova funzionalità di un'API del servizio Web).

Puoi confermare che ricciolo richiesta sta lavorando bene

curl -k --user [email protected]:password https://localhost:8443/mifosng-provider/api/v1/client_impact_portal 

Se si sta lavorando bene:

ImpactPortal.factory('apiFactory', function ($resource) { 
    return $resource('https://localhost:8443/mifosng-provider/api/v1/client_impact_portal', {}, { 
     query: { 
      method: 'JSONP', 
      params: {}, 
      isArray: true 
     } 
    }) 
}); 

prova a seguire questo tutorial che consumano un API esterna: http://www.toptal.com/angular-js/a-step-by-step-guide-to-your-first-angularjs-app

+0

grazie per la risposta dettagliata. Ma il mio problema è che quando si utilizza solo localhost api. funziona bene con gli URL citati in questo tutorial. firefox restituisce un errore che dice "Richiesta di origine incrociata bloccata: questo può essere risolto spostando la risorsa nello stesso dominio o abilitando CORS." – Channa

+0

CORS è bloccato nel browser che non consente ad AJAX di richiedere dati da un altro dominio. Puoi aggiungere crossdomain.xml come questo http://stackoverflow.com/questions/20442628/cors-jquery-ajax-request o http://stackoverflow.com/questions/213251/can-someone-post-a-well- format-crossdomain-xml-sample Oppure la soluzione alternativa per AJAX Cross-Domain è JSONP: http://stackoverflow.com/questions/3506208/jquery-ajax-cross-domain ma l'API deve supportare questo tipo di richiesta. –

+0

Se questo risolve il tuo problema; per favore contrassegna la risposta come corretta. –

6

CORS Abilitazione in Angular.js

var myApp = angular.module('myApp', [ 
    'myAppApiService']); 

myApp.config(['$httpProvider', function($httpProvider) { 
     $httpProvider.defaults.useXDomain = true; 
     delete $httpProvider.defaults.headers.common['X-Requested-With']; 
    } 
]); 

CORS Un server di supporto devono rispondere alle richieste con diverse intestazioni di controllo di accesso:

Access-Control-Allow-Origin: "*" 

Per impostazione predefinita, le richieste sono CORS non fatto con biscotti. Se il server include questa intestazione, noi possiamo inviare cookie insieme alla nostra richiesta impostando l'opzione withCredentials su true.

Access-Control-Allow-Credentials (optional) 

se si imposta l'opzione withCredentials nella nostra richiesta di vero, ma il server non risponde con questa intestazione, la richiesta avrà esito negativo e viceversa.

4

solo provare questo:

Vai a https://[your-domain].com e quindi Chrome ti blocca con la famosa pagina:

La connessione non è privata

Quindi, andare verso il basso per ADVANVCED e poi proceed.

Il certificato è probabilmente autofirmato.

Ricordarsi di farlo per ogni sessione di Chrome.

Problemi correlati