Este respuesta me ha ayudado en gran medida, aunque no completamente resuelto mis problemas. Estoy usando un código similar a este, que es:

function getResponse() {

    var the_url = "http://www.myurl.com/api/get";

    $.ajax({
      url: the_url,
      dataType: 'jsonp',
      type: 'get',
      success: function(data) {
        var json_response = data;
        alert(data);
      }
    });
}

Básicamente, en lugar de colocar una url necesito publicar un rizo porque de autenticación.

El ejemplo funciona bien con la url simple, pero de lo que estoy deseando utilizar para ‘the_url’ es este:

var the_url = 'curl -u username:password "http://www.myurl.com/api/get"';

Esto es donde estoy teniendo problemas de lo que significa el éxito declaración nunca se alcanza.

¿Cuál es la mejor manera de resolver esto, y si no es alcanzable podría alguien recomendar la mejor solución?

Gracias de antemano.

InformationsquelleAutor Lloyd Powell | 2012-07-03

3 Comentarios

  1. 3

    Si estuviera usando AJAX simple, entonces usted puede simplemente añadir personalizado (autenticación básica) encabezado en el principio de su llamada AJAX. Pero usted está usando JSONP, que en realidad es equivalente a la adición de <script> etiqueta HTML.

    Así que lo que están pidiendo es: puedo hacer la autenticación básica con <script> etiqueta? No, No puede.

    La única posibilidad que queda para usted es hacer el procesamiento del lado del servidor, como Matt Gibson sugiere.

    Nota sin embargo, que el navegador debe fuego de diálogo de autenticación después de la JSONP solicitud (ver también esta respuesta). No es que funcione en tu caso??

    • Yeh lo hace, a menos que me proporcione el nombre de usuario y la contraseña de propiedades, entonces los errores. Por desgracia no sirve de nada!
    • Veo, por lo que la única posibilidad que es la de implementar el lado del servidor, por lo que el fuego curl (ver a Matt Gibson respuesta).
  2. 3

    Usted necesita una página en el servidor, que el código JavaScript de los puntos a, que tiene la curvatura de comandos en ella. Usted no puede simplemente ejecutar cURL directamente como una url como que.

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $the_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
    $result = curl_exec($ch);
    curl_close($ch);
    echo $result;
  3. 2

    Actualización de su ajax de jquery llamada para incluir la username y passward opciones para la autenticación HTTP, consulte la Opciones avanzadas en la documentación:

    If the server performs HTTP authentication before providing a response,
    the user name and password pair can be sent via the username 
    and password options.

    Actualización como se señaló en los comentarios, la autenticación HTTP, simplemente no funciona con JSONP, como el interrogador se utiliza (no vea mi mal).
    Voy a dejar esta respuesta aquí de todos modos para otras personas a encontrar que no uso JSONP.

    • -1: no funciona con JSONP.
    • No creo que emula el mismo método, yo no estoy 401 (no autorizado) de jquery

Dejar respuesta

Please enter your comment!
Please enter your name here