2015-10-05 10 views
5

Sto cercando di creare pagina di autenticazione di base in cui la mia forma ha tre campiautenticazione di base utilizzando jQuery/ajax

  1. nome utente
  2. la password
  3. tipo concessione

Su presentazione di un modulo I voglio solo visualizzare la risposta restituita da un server sul mio HTML in formato JSON. La mia chiamata AJAX al servizio Web richiede anche l'autorizzazione Autorizzazione da impostare. Ma in qualche modo le intestazioni non vengono impostate. Sto cercando

beforeSend : function(xhr) 
    { 
     xhr.setRequestHeader('Authorization', "Basic ******"); 
     xhr.setRequestHeader("contentType", "application/json;charset=UTF-8"); 
    } 

Ma quando il debug del codice in consolle sembra punto di interruzione non passa mai in questa funzione. Sono un principiante di Ajax e ho provato sotto il codice di googling su internet. Sto postando l'intero codice qui sotto.

CODICE:

$(document).ready(function() { 

    // process the form 
    $('form').submit(function(event) { 

     // get the form data 
     var formData = { 
      'username': $('#username').val(), 
      'password': $('#password').val(), 
      'grant_type': $('#grantType').val() 
     }; 

     // process the form 
     $.ajax({ 
      type  : 'POST', 
      url   : 'http://localhost:9090/oauth/token', 
      beforeSend: function (xhr) 
      { 
       xhr.setRequestHeader("Authorization", "Basic ******"); 
       xhr.setRequestHeader("contentType", "application/json;charset=UTF-8"); 
      }, 
      data  : formData, // our data object 
      dataType : 'json', // what type of data do we expect back from the server 
         encode   : true 
     }) 
      // using the done promise callback 
      .done(function(data) { 

       // log data to the console so we can see 
       console.log(data); 
       alert(data); 

       // here we will handle errors and validation messages 
      }) 

      .fail(function (jqXHR, textStatus){ 
       alert('Status : ' + textStatus + '' + JSON.stringify(jqXHR)); 
      }); 

     // stop the form from submitting the normal way and refreshing the page 
     event.preventDefault(); 
    }); 

}); 

Che cosa provoca non impostare le intestazioni nel mio codice. Per favore correggimi.

Nella console (Google Chrome) in scheda di rete, che potete vedere qui sotto intestazioni di richiesta

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8 
Access-Control-Request-Headers:accept, authorization, content-type, contenttype 
Access-Control-Request-Method:POST 
Connection:keep-alive 
Host:192.168.1.128:9090 
Origin:null 
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 

e al di sotto di errore appare in consolle. enter image description here

E al momento della chiamata stessa API da avanzata Resto client un'estensione per Google Chrome che mi mostra tutte le intestazioni

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 
Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo 
contentType: application/json;charset=UTF-8 
Authorization: Basic ********** 
Content-Type: application/x-www-form-urlencoded 
Accept: */* 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US,en;q=0.8 

sto semplicemente in esecuzione la mia pagina web utilizzando file di protocollo.

Es: file:///E:/Mahendra/Practice%20Example/Test/OauthTest.html

io non sono sicuro se questo sta causando un problema.

+1

Eventuali duplicati di [ajaxSetup (beforeSend not working) (http://stackoverflow.com/questions/19361908/ajaxsetup-beforesend-not-working) – abc123

+0

Anche questo sembra essere un problema CORS, Block-Origin Request Blocked, http: // stackoverflow .com/questions/5750696/how-to-get-a-cross-origin-resource-sharing-cors-post-request-working – abc123

risposta

0

Io di solito aggiungere intestazioni come questo (il codice è da un "Interrogazione di un servizio remoto utilizzando il proxy web in Sharepoint", here):

$.ajax({ 
    url: "../_api/SP.WebProxy.invoke", 
    type: "POST", 
    data: JSON.stringify(
     { 
      "requestInfo": { 
       "__metadata": { "type": "SP.WebRequestInfo" }, 
       "Url": url, 
       "Method": "GET", 
       "Headers": { 
        "results": [{ 
         "__metadata": { "type": "SP.KeyValue" }, 
         "Key": "Accept", 
         "Value": "application/json;odata=verbose", 
         "ValueType": "Edm.String" 
        }] 
       } 
      } 
     }), 
    headers: { 
     "Accept": "application/json;odata=verbose", 
     "Content-Type": "application/json;odata=verbose", 
     "Authorization": "yourkeyvalueforauthorizationEXAMPLE", 
     "X-RequestDigest": $("#__REQUESTDIGEST").val() 
    }, 
    success: successHandler, 
    error: errorHandler 
}); 

Fammi sapere come va

+0

Ho provato questo, ma non ha funzionato. Può essere che lo sto usando usando il protocollo 'file: ///', questo causa problemi? –

+1

@mahendrakawde Non sono sicuro di cosa intendi, dovresti modificare la tua domanda nel caso in cui ci siano ulteriori informazioni che ritieni possano causare il problema. –

+0

@mahendrakawde il protocollo file: /// non funziona. avrai bisogno di ospitarlo da qualche parte anche http: // localhost – abc123