2012-04-11 15 views
5

के साथ प्राधिकरण शीर्षलेख भेजना मैंने स्टैक ओवरफ्लो पर निम्नलिखित प्रश्नों को देखा है जिसमें मैं क्या करने की कोशिश कर रहा हूं। jquery और AJAX

$(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 फ़ाइल से सुरक्षित है:

Ajax Authorization Request headers fails again and again

jQuery Ajax Unauthorized 401 Error

Sending credentials with cross-domain posts?

यहाँ मेरी कोड है कि मैं वर्तमान में है। बेस 64 एन्कोड में उपयोग किए गए उपयोगकर्ता नाम/पासवर्ड कॉम्बो का उपयोग करके साइट का लॉगिन मेरे लिए ठीक काम करता है।

मैं इस स्क्रिप्ट को यूआरएल की तुलना में एक अलग डोमेन पर चला रहा हूं, यही कारण है कि मेरे पास jsonp = है? यूआरएल में

प्रतिक्रिया im ब्राउज़र में कंसोल से हो रही है: GET http://sample.domain.com/script.php?name1=value1&jsonp=jsonp1334177732136 401 (Authorization Required)

+0

क्यों आप मूल प्रमाणीकरण यहाँ का उपयोग कर रहे हैं? आपका जेएस दुनिया में बेस 64'd पासवर्ड का पर्दाफाश करेगा, इसलिए यह किसी भी सुरक्षा की पेशकश नहीं करेगा। या मैंने आपकी स्थिति को गलत समझा है? – jimw

+0

ईमानदार होने के लिए हर विधि HTTP के माध्यम से असुरक्षित है। यही कारण है कि HTTPS मौजूद है। – freakish

+0

यहां सुरक्षा सवाल नहीं है। यह मेरे पास सिर्फ एक नमूना है। मैंने कोशिश करने और काम करने के लिए कुछ पाने के लिए मूलभूत रूप से इसे खींच लिया। मेरे पास बुनियादी काम करने के बाद, बीमार इसे सुरक्षित बना देता है। – bretterer

उत्तर

4

JSONP एक स्क्रिप्ट टैग प्रॉक्सी का उपयोग करता। यह कस्टम हेडर का समर्थन नहीं करेगा। क्या आप एंडपॉइंट के नियंत्रण में हैं? यदि ऐसा है तो सीओआरएस को सक्षम करने में, या जीईटी स्ट्रिंग में प्रमाणीकरण कुंजी पास करें।

जब jsonp JQuery का उपयोग कर अपने यूआरएल धर्मान्तरित "अजाक्स" अनुरोध करने के लिए:

<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 =