2011-12-13 30 views
6

Tengo un formulario HTML muy simple que usa POST y su acción llama a un script PHP en mi servidor web.Formulario HTML POST Cross Domain

Aquí está el truco ... el html que contiene el formulario no está alojado en el mismo servidor y existe en un dominio diferente. Sin atascar esta pregunta con explicaciones, esto tiene que hacerse por razones comerciales. Necesitan existir dentro de estos dominios específicos.

Cuando envío mi formulario, accedo al script PHP correctamente, pero luego intento extraer los datos POST y desaparecen. Estoy pensando que esto es un problema de seguridad porque temporalmente coloqué el formulario en el mismo servidor que el PHP y funcionó bien.

¿Hay alguna manera de que pueda hacer que esto funcione con los dos dominios separados? Gracias por adelantado.

Editar:

Código PHP (emailTemplate.php):

<?php 
var_dump($_POST); 
?> 

formulario HTML:

<form name="emailForm" id="emailForm" method="post" onsubmit="return beforeSubmit();" action="https://***.***.com/emailTemplate.php"> 
    <textarea rows="15" cols="75" id="myHtmlText" name="myHtmlText"></textarea> 
    <input type="text" id="toAddr" name="toAddr" size="60"/> 
    <input type="text" id="fromAddr" name="fromAddr" size="60"/> 
    <input type="text" id="subjectLine" name="subjectLine" size="60"/> 
    <input type="submit" name="Submit" value="Email Letter"> 
</form> 
+0

Teóricamente, lo que está haciendo no debería causar ningún problema. Suena como (a) hay un error en el script PHP que recibe los datos POST o en el formulario web enviándolo, o hay algún tipo de medida de seguridad en su script PHP o la configuración del servidor que está bloqueando la publicación. Desafortunadamente, lo mejor que podemos hacer es especular a menos que puedas publicar parte de tu código. – Aaron

+0

@Aaron Agregué el código si eso ayuda en absoluto. Gracias. – jcmitch

+0

Parece que funciona si Firefox pero no IE. IE da una advertencia XSS. – jcmitch

Respuesta

5

Si sólo está experimentando el problema en IE, el filtro XSS puede ser el culpable. This article proporciona detalles para deshabilitarlo.

Para evitar este problema por completo, intente publicar su formulario en un script PHP en su servidor, y en ese script, cree una sesión CURL que publique el formulario en el otro script. La transacción XSS ocurre independientemente del navegador web del cliente, evitando estas restricciones de seguridad basadas en el navegador en el proceso.

+0

¡Gracias! ¡Funcionó bien! – jcmitch

+0

Esto no funcionará si el resultado contiene alguna URL relativa. El cliente interpretará esas URL en relación con su dominio, no el dominio remoto. – Barmar

Cuestiones relacionadas