Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nknk

Ajax + Ssl + Php

Recommended Posts

Eu migrei um sistema (http) que tinha requisições em ajax para https. Não sei se é conhecido de todos, mas quando se passa de uma url http para https com session, ela se perde por questões de segurança (acho). Mas no meu caso eu não faço esta migração, o registro da session é feita já em uma página https assim como a tela de login. O fato curioso é que eu consigo fazer requisições via ajax neste novo sistema com ssl e as session são reconhecidas. A minha dúvida é, essas requisições são feitas com https, mesmo eu não ter colocado https na requisição? Se não, porque a session não se perdeu?

A outra dúvida seria: Pq ajax não faz requisições em https? É possível ? Pq pelo que tentei não funciona e pelo que li.

 

Segue o código que utilizo.

 

function criaXMLHttp() {
	if (typeof XMLHttpRequest != "undefined")
	return new XMLHttpRequest();
	else if (window.ActiveXObject){
	var versoes = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0",	"MSXML2.XMLHttp", "Microsoft.XMLHttp"];
	}
	for (var i = 0; i < versoes.length; i++){
	try{
	return new ActiveXObject(versoes[i]);
	}catch (e) {}
	}
	throw new Error("Seu browser nao suporta AJAX");
}

Exemplo de requisição

 

function teste(codigo) {
	var XMLHttp = criaXMLHttp();
	var divInfo = document.getElementById("resultado");
	XMLHttp.open("get", "teste.php?id=" + codigo, true);
	XMLHttp.onreadystatechange = function () {
	if (XMLHttp.readyState == 4)
	if (XMLHttp.status == 200){	
	var result = XMLHttp.responseText;
	divInfo.innerHTML = result;
	} 
	else {	divInfo.innerHTML = "Um erro ocorreu" + XMLHttp.statusText;	}	
	};
	XMLHttp.send(null);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

execute phpinfo()

 

e retorne aqui o valor da diretiva

 

Registered PHP Streams

deve ter algo do tipo

 

php, file, data, http, ftp, compress.zlib, https, ftps

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu verifiquei o phpinfo() e aparece além destes outras especificações, mas não entendi como estaria relacionado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pertence ao mesmo dominio, só que nessa url é protegida por session (login,senha) o que me leva supor que esse ajax está sendo feito via https.

Reformulando a minha pergunta: Numa página https que tem ajax, as requisições são feitas em https ?

Neste trecho [xmlHttp.open("get", "teste.php?id=" + codigo, true);]

teste está sendo requisitado assim : https://caminho/teste.php?id=x ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta fazer um teste, na página em ajax (teste.php) manda imprimir $_SERVER['HTTPS'] e vê se retorna "on".

Na minha concepção eu imagino o http e https como 2 tubos onde trafegam as informações, no https elas trafegam criptografadas o que me leva a crer que a requisição está sendo feita por https. Porém como essa requisição parte da máquina do cliente via javascript não tenho certeza, faça um teste e posta aí pra gente saber. De qualquer forma fiquei curioso e vou testar aqui tb.

 

Falo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o teste, retornou "on"... Ou seja, setá sendo feita em https a requisição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só não entendo pq se eu colocar o endereço https:// completo o ajax não funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

humm..

acho que entendi o que você está dizendo

 

quando usa caminho relativo o Ajax funciona

quando usa caminho absoluto não funciona.

 

então você quer saber:

 

1- o motivo de nao funcionar quando usa caminho absoluto https://.../pagina.php

2- se usando caminho relativo, os dados serão tunelados sob https ou percorrerão normalmente

 

 

quando tiver um tempo vou fazer uns testes.

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. A outra dúvida era: saber se as requisições estão sendo feitas em https. Como a session é registrada em https, então são feitas em https.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.