2015-01-28 14 views
7

Dopo aver installato SSL Cert in una pagina Web, ho riscontrato il problema per cui la pagina pubblicata con https richiederebbe l'endpoint http con ajax. Sto usando restangular e ho cambiato l'URL di base per avere https.MixedContent quando sto caricando la pagina https tramite ajax, ma il browser continua a pensare che sia http

var uri = location.protocol + "//" + location.host; 
    RestangularProvider.setBaseUrl(uri); 

La parte interessante è che, quando vedo la richiesta negli strumenti di Chrome per sviluppatori vedo

Request URL:https://theaddress.com/api/endpoint 
Request Headers 
Provisional headers are shown 
Accept:application/json, text/plain, */* 
Referer:https://theadress.com/somepage 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36 
X-Requested-With:XMLHttpRequest 

Quindi la richiesta dovrebbe essere un https uno, ma ho ancora ottenere:

Mixed Content: The page at 'https://theaddress.com/somepage' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://theadress.com/api/endpoint'. This request has been blocked; the content must be served over HTTPS. 

Inoltre, dovrei menzionare, questo succede sul server prod, ma sul mio test locale funziona bene (ho autofirmato ssl cert) dopo averlo fatto usare l'url di base che include https.

Quale potrebbe essere il problema?

+0

Qual è la risposta dalla richiesta 'https'? Forse c'è un reindirizzamento HTTP 302 all'endpoint 'http'? –

+0

È normale JSON con 200 Response. Nessun reindirizzamento. – spiroski

risposta

8

Ho appena trascorso un buon 4 ore cercando di risolvere un problema simile. Ecco cosa ha risolto il mio:

Sommario: aggiungere un trailing '/' alla vostra richiesta

ho trovato this post utile per fissare il mio problema. Fondamentalmente, al server non interessa se si invia la richiesta con un "/" finale o meno, perché internamente si indirizza a "/" se non lo si aggiunge. Tuttavia, se il routing avviene internamente (ad es. Nginx passa la richiesta ad un processo locale), si ottiene un reindirizzamento http che farà fallire la richiesta.

+0

Mi salvi 1 ora, ho cercato 3 ore –

+0

Mi ha salvato 3.5 ore dalla logica di cui sopra, grazie! – user2085368

0

Ho provato @ la correzione di Kadi di aggiungere una barra e ha funzionato, ma una soluzione più elegante per me è stata modificare la richiesta da GET a POST, che ha risolto anche il problema.

Ancora non si sa quale sia la causa principale.

Problemi correlati