2012-04-11 65 views
5

我在這裏看到了下面的問題,在沒有運氣的情況下,我試圖做什麼。用jquery和ajax發送授權頭文件

Ajax Authorization Request headers fails again and again

jQuery Ajax Unauthorized 401 Error

Sending credentials with cross-domain posts?

這裏是我的代碼,我目前有:

$(document).ready(function() { 
     $.ajax({ 
      url: 'http://sample.domain.com/script.php?name1=value1&jsonp=?', 
      type: 'GET', 
      dataType: 'json', 
      contentType: "application/json", 
      beforeSend: function(xhr) { 
       xhr.setRequestHeader("Authentication", "Basic ZnJvbWFwcGx********uOnRoM24zcmQ1UmgzcjM=") //Some characters have been replaced for security but this is a true BASE64 of "username:password" 
      }, 
      success: function(data){ 
       alert(data); 
      } 
     }); 
    }); 


</script> 

子站點我是通過htpasswd文件進行密碼保護。使用base64編碼中使用的用戶名/密碼組合,該網站的登錄工作正常。

我在一個不同的域名上運行這個腳本,而不是那個url所在的域名,這就是爲什麼我有jsonp =?在url

響應IM從瀏覽器控制檯得到的是: GET http://sample.domain.com/script.php?name1=value1&jsonp=jsonp1334177732136 401 (Authorization Required)

+0

你爲什麼要使用基本身份驗證嗎?你的JS會將base64的密碼暴露給全世界,所以它不會提供任何安全性。或者我誤解了你的情況? – jimw 2012-04-11 21:03:50

+0

說實話,每個方法都是通過HTTP不安全的。這就是HTTPS存在的原因。 – freakish 2012-04-11 21:08:32

+0

這裏的安全性不是問題。這只是我所擁有的一個樣本。我已經把這個降到了基本的水平,嘗試着去做一些工作。在我完成基本工作之後,我會保證安全。 – bretterer 2012-04-11 21:28:11

回答

4

JSONP使用腳本標籤代理。它不支持自定義標題。你在控制端點嗎?如果是這樣,請考慮啓用CORS,或者在GET字符串中傳遞身份驗證密鑰。

當使用JSONP JQuery的轉換您的網址 「Ajax」 的要求:

<script src="[endpoint]"></script> 

它,然後寫了一個隨機函數

var json9409d0sf0d9s0df90 = function() { 
    //some callback logic here. 
} 

,並附加回調= json9409d0sf0d9s0df90

您的服務器呢?說

echo $_GET['callback] . "(" . $json . ")"; 

併發送回爲如此

json9409d0sf0d9s0df90({some: data}); 

是由瀏覽器exexcuted和jQuery的神奇處理程序,使它像一個正常的Ajax回調響應處理的響應。

AFAIK,<script src=""></script>資產負載不會採用任何標準瀏覽器的自定義標題。

5

標題名稱是Authorization,並且要發送 「Authentication

例如

授權:基本QWxhZGRpbjpvcGVuIHNlc2FtBmU =