2010-10-19 23 views
7

Estoy trabajando en un proyecto que me obliga a PUBLICAR algunos datos en una url que requiere un nombre de usuario y una contraseña para acceder. ¿Cómo construyo la URL para que inicie sesión automáticamente en el sistema?POST a una URL protegida con contraseña?

$.ajax({ 
    url: "https://xxxxxxx", 
    type: "POST", 
    data: "___PUT_BODY___="+file+"&file="+time, 
}) 
+1

¿Utiliza autenticación HTTP básica o algo personalizado y basado en HTML? – lonesomeday

Respuesta

6

Si la página utiliza "Básico" autenticación HTTP (del tipo en el navegador abre una pequeña ventana de diálogo solicitando un nombre de usuario y contraseña), sólo tiene que hacer:

https://username:[email protected]/ 

Si el sitio tiene un formulario de inicio de sesión incrustado en la página en alguna parte, luego la información de inicio de sesión no entra en la URL. Debería simular el envío de ese formulario (generando una solicitud similar de AJAX específicamente para iniciar sesión).

+0

Estoy de acuerdo con votar, pero mis 2 centavos es que tiendo a utilizar bloqueos personalizados para mis páginas seguras, y uso tokens únicos para otorgar el acceso necesario. Por lo tanto, mi publicación tendría datos como {file: file, token: token} donde la url es un bypass de bloqueo que verifica el token y el sitio de referencia para validar el acceso. Suena complejo pero no lo es. Puede hacer esto con sesiones básicas y un formulario de inicio de sesión. Tal vez 20 minutos para configurar. –

+0

"Si el servidor realiza la autenticación HTTP antes de proporcionar una respuesta, el par de nombre de usuario y contraseña se puede enviar a través de las opciones de nombre de usuario y contraseña". – Incognito

2

Read the funny manual

Además, no hace su cadena de consulta de la manera que sale en la barra de URI, lo convierten en un objeto. Además, el punto y coma al final de esa declaración.

$.ajax({ 
    url: "https://example.com", 
    type: "POST", 
    data: { 
      "___PUT_BODY___=" : file, 
      "&file="   : time 
      }, 
    password : "theP4s$w0rD!", 
    username : "Bob's big bad world of HTTP Auth" 

}); 
0

Si la página que envía desde pública es, de si el nombre de usuario/contraseña tiene que seguir siendo privada debería reconsiderar poner su nombre de usuario/contraseña en la página.

Puede publicar en una página local en su servidor, que a su vez puede enviar los datos con, por ejemplo, curl al servidor receptor.

También utilizando curl puedes hacer cualquier tipo de autenticación que necesites.

Cuestiones relacionadas