2013-02-13 32 views
3

我一直在嘗試對休息服務進行$ ajax()調用。我需要使用基本身份驗證來進行此調用,所以我將beforeSend處理程序添加到了我的ajax調用中。當我在Fiddler中跟蹤這個時,我沒有看到它將授權頭附加到我的請求中。beforeSend不會將授權標頭添加到我的jquery ajax調用(基本授權)

<body> 
<div id="Button1" style="border: 2px solid blue; font-family: Cambria;"> 
    Get CMS Content 
</div> 
<br /> 
<div id="error" style="color: Red; font-family: Cambria; font-size: large; display: none;"> 
</div> 
<span style="font-family: Cambria; color: #009933; font-weight: bold">Result:</span> 
<div id="result"> 
</div> 
<script src="scripts/jquery-1.8.3.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#Button1').click(function() { 
      $('#error').fadeOut('slow'); 
      //var requestParams = { 'format': 'json', 'username': 'administrator', 'password': '' }; 
      var requestParams = { 'format': 'json' }; 
      $.ajax({ 
       beforeSend: function (xhr) { 
        xhr.setRequestHeader("Authorization", "Basic YWRtaW5pc3RyYXRvcjo="); 
       }, 
       url: "http://localhost/KenticoCMS7/rest/cms.country", 
       data: requestParams, 
       dataType: "text", 
       contentType: "application/json;", 
       success: function (result) { 
        $('#error').fadeOut('slow'); 
        $('#result').text(result); 
       }, 
       error: function (xhr, status, errorThrown) { 
        $('#error').text(JSON.stringify(xhr)); 
        $('#error').fadeIn('slow'); 
       } 
      }); 
     }); 
    }); 
</script> 

圍繞這個建議會有很大的幫助。另外,有人可以評論一下,爲什麼fiddler將這個請求作爲OPTIONS類型來追蹤,當它應該是GET類型時?

+0

此外,我得到一個405錯誤:方法不允許在小提琴上的迴應。 – vaibinewbee 2013-02-13 18:31:40

回答

0

選項表示這是一個CORS請求,它需要PREFLIGHT請求來確定服務器允許請求方法並且允許憑據。通過返回一個HTTP/405,服務器表明它不支持CORS,這導致後續的GET請求(包括它的憑證)永遠不會被髮送。

您是否在發送請求的交叉源?

+0

感謝您的信息埃裏克。 – vaibinewbee 2013-02-15 16:13:18