PHP - Problemas para redireccionar http a https

 
Vista:
Imágen de perfil de Jhon
Val: 41
Ha disminuido su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problemas para redireccionar http a https

Publicado por Jhon (23 intervenciones) el 08/10/2017 01:28:00
Saludos terrícolas:

Estoy haciendo una app en un sharing hosting y ya había subido algunas cosas pero hoy me di cuenta que entre las muchas carpetas del sharing hosting tenía certificación ssl y me puse a cambiar cosas para entrar en modo seguro.
Ahora si uso https://midominio.com/app funciona perfecto.
SIn embargo cuando usaba http://midominio.com/app no funcionaba el ajax que hace el login así que intenté redirigir los ingresos por http a https desde el .htacces
Para eso hice lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
RewriteEngine On
Options -Indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
# [NC] is a case-insensitive match
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Esto funcionó a medias ya que me redirigía de http://midominio.com a https://midominio.com pero al hacer http://midominio.com/app fracasaba estrepeitosamente.
Me di cuenta que dentro de /app tengo otro .htaccess y le pegué las mismas líneas que añadí al anterior (desde RewriteCond %{HTTPS} off) pero fallaba la conexión diciendo que había sido redireccionado muchas veces.
Quité unas líneas tanteando y funcionó con esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^(.*)$ index.php/$1 [L]
RewriteCond %{HTTP_HOST} ^misubdominio\.midominio\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.misubdominio\.midominio\.com$
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^/?$ "https\:\/\/midominio\.com\/app" [R=301,L]
#RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
# [NC] is a case-insensitive match
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Pero ahora cuando ejecuto la función que hace el login por ajax me ocurre esto:

1
Failed to load https://midominio.com/app/Login/validar: Redirect from 'https://midominio.com/app/Login/validar' to 'https://midominio.com/app/index.php/Login/validar' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.midominio.com' is therefore not allowed access.

Desde mi profunda ignorancia entiendo que me dice algo así como que sólo acepta peticiones del mismo origen, pero a mi me parece que el origen es el mismo.
¿Alguna ayudita?? Gracias de antebrazo.

PD: Como verán también tengo un subdominio app.midominio.com que en el htacces de ejemplo llamé misubdominio.midominio.com y por si es importante, uso codeigniter como framework.

PD2:
No sé si sirve de algo pero la función de javascript que hace el login es ésta:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/**
 * Created by Jhonbarc on 10/2/2017.
 */
var uriRoot = "https://midominio.com/app";
$(window).on("load",function () {
 
    $("#enviar").on("click", function () {
        login();
    });
    $("#username").on("keypress",function(e){
        if(e.keyCode == 13){
            login();
        }
    })
    $("#password").on("keypress",function(e){
        if(e.keyCode == 13){
            login();
        }
    })
})
 
function login() {
    if($("#username").val() == ""){
        Materialize.toast('El campo usuario es obligatorio', 3000, 'orange rounded');
    }
    else if($("#password").val() == "") {
        Materialize.toast('El campo password es obligatorio', 3000, 'orange rounded');
    }
    else{
        url = uriRoot+"/Login/validar";
        data = {
            username : $("#username").val().toLowerCase(),
            password : $("#password").val().toLowerCase()
        }
        $.post(url,data,function (response) {
            try{
                var json = JSON.parse(response);
                json = json[0];
                if (json.usuario_estado == "0"){
                    Materialize.toast('El usuario está inhabilitado', 3000, 'red rounded');
                }
                else{
                    Materialize.toast('Bienvenido a Insoen', 3000, 'green rounded',function(){location.reload()});
                }
            }
            catch (err){
                Materialize.toast('El usuario no existe', 3000, 'red rounded');
            }
        });
    }
}

Gracias again.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jhon
Val: 41
Ha disminuido su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problemas para redireccionar http a https

Publicado por Jhon (23 intervenciones) el 08/10/2017 02:04:47
Intenté añadiendo esto en el código de Login.php, osea el controlador
1
header("Access-Control-Allow-Origin: *");

Ahora al hacer login me contesta esto:
1
XHR finished loading: post https://midominio.com/app/Login/validar

Pero no me redirige, sólo se reinicia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jhon
Val: 41
Ha disminuido su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problemas para redireccionar http a https

Publicado por Jhon (23 intervenciones) el 08/10/2017 02:32:04
Edito: No funciona del todo. Si me logueo me manda a login de nuevo y la segunda vez que me logueo sí funciona.
Al parecer no crea la sesión la primera vez :(

Ok, creo que lo solucioné yo solo (Al menos de momento eso parece).
Lo que hacía login.js era que si el usuario era válido refrescaba la página ya que lo había dicho al controlador login que redirigiera a menu.php si había sesión y si no que mandara a login.php de nuevo.
La cosa es que en menu.php además de añadir el header tuve que quitar esta línea de codeigniter:
1
defined('BASEPATH') OR exit('No direct script access allowed');

COmentando esa línea ya terminé por fin con mis líos (No sé que hace y espero no estar empeorando todo).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jhon
Val: 41
Ha disminuido su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problemas para redireccionar http a https

Publicado por Jhon (23 intervenciones) el 08/10/2017 06:14:50
Me rendí y comenté las líneas en el htacces. Me rendí de momento mientras se me ocurre otra cosa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 604
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problemas para redireccionar http a https

Publicado por Miguel (218 intervenciones) el 08/10/2017 07:02:46
Hola,

Ya intentaste usando rutas relativas en tu funcion AJAX del login? Es decir, no especificar el HTTPS en la URL del POST (quitar tu variable uriRoot), y dejar algo como ajax/login. Si es necesario que tu App se tenga que usar sólo con HTTPS entonces desde PHP (o tu lenguaje backend) verificas el protocolo y avisas al usuario - o rediriges directamente - cuando sea necesario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jhon
Val: 41
Ha disminuido su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problemas para redireccionar http a https

Publicado por Jhon (23 intervenciones) el 08/10/2017 21:54:39
Sin uriRoot no funciona :(
Gracias por la idea de todas maneras.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar