2015-04-18 34 views
7

Il mio sito Web supporta entrambi i protocolli http e https. Tuttavia usando il codice seguente nel file .htaccess, è possibile impostare un solo dominio per consentire le richieste CORS:Consentire richieste di origine incrociata per http e https

Header set Access-Control-Allow-Origin: http://example.com

voglio permettere CORS per HTTP e HTTPS versioni del mio sito (non solo "*") e ha cercato le soluzioni qui: Access-Control-Allow-Origin Multiple Origin Domains?

Ma il problema è che tutte le soluzioni si basano su Origin intestazione nella richiesta che non può esistere e, inoltre, non è sicuro. (chiunque può inserire un'intestazione di origine nella loro richiesta)

Desidero sapere se la richiesta è stata pubblicata su https e utilizzare questa informazione per impostare l'intestazione CORS corretta. Qualcosa di simile:

SetEnvIf servedOverHttps httpsOrigin=true 
Header set Access-Control-Allow-Origin: https://example.me env=httpsOrigin 

SetEnvIf notServedOverHttps httpOrigin=true 
Header set Access-Control-Allow-Origin: http://example.me env=httpOrigin 

Come posso scoprire che si tratta di una richiesta di https?

risposta

3

Hai provato a utilizzare la variabile HTTPS?

Sarà impostato su "on" per tutte le richieste https. tuo .htaccess dovrebbe assomigliare a questa

Header set Access-Control-Allow-Origin: http://example.com    #default 
Header set Access-Control-Allow-Origin: https://example.com env=HTTPS #override if https 
+1

cosa succede se uno sta impostando le intestazioni a livello di codice dal file php? – Vivek

Problemi correlati