मुझे बाकी लाइब्रेरी पूरी तरह से काम कर रही है, बस एपीआई कुंजी उत्पन्न करने की कोशिश कर रहा है और एजेक्स के जरिए निष्पादित होने पर 403 को फेंक दिया गया है।कोडइग्निटर रीस्ट एपीआई लाइब्रेरी अजाक्स पुट फेंकना 403 फॉरबिडन
({"status":false,"error":"Invalid API Key."})
मैं इसे REST_Controller के तहत समारोह _remap लिए .. लगभग रूप में अगर im यूआरएल गलत तरीके से बुला पता लगाया?
कार्यप्रवाह: वे किसी खाते में पंजीकरण के बाद वे क्लिक करेंगे "उत्पन्न कुंजी"user visits site1.com -> registers for account -> generates api key for their domain -> key recorded in db -> key displayed
निम्नलिखित रूप site1.com पर होगा।
ajax कॉल:
/**
* Generate an API Key for Us to use
*/
$("#submitGetApiKey").click(function(){
$.ajax({
url: "http://dev.site1.com/api/key",
crossDomain: true,
type: "PUT",
dataType: "jsonp",
error: function(XMLHttpRequest, textStatus, errorThrown){
alert(errorThrown);
},
success: function(data){
for (var i = keys.length - 1; i >= 0; i--) {
console.log(keys[i]);
};
}
});
});
GitHub पर बाकी सर्वर: के तहत application/controllers/api/key.php
key.php फ़ाइल है कि संबंधित होना चाहिए की स्निपेट key.php पर https://github.com/philsturgeon/codeigniter-restserver
नज़र विशेष रूप से इस प्रक्रिया के लिए:
/**
* Key Create
*
* Insert a key into the database.
*
* @access public
* @return void
*/
public function index_put()
{
// Build a new key
$key = self::_generate_key();
// If no key level provided, give them a rubbish one
$level = $this->put('level') ? $this->put('level') : 1;
$ignore_limits = $this->put('ignore_limits') ? $this->put('ignore_limits') : 1;
// Insert the new key
if (self::_insert_key($key, array('level' => $level, 'ignore_limits' => $ignore_limits)))
{
$this->response(array('status' => 1, 'key' => $key), 201); // 201 = Created
}
else
{
$this->response(array('status' => 0, 'error' => 'Could not save the key.'), 500); // 500 = Internal Server Error
}
}
रिस्पांस/अनुरोध हेडर
Request URL:http://dev.mapitusa.com/api/key
Request Method:PUT
Status Code:403 Forbidden
Request Headersview source
Accept:application/json, text/javascript, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:0
Cookie:ci_session=a%3A4%3A%7Bs%3A10%3A%22session_id%22%3Bs%3A32%3A%22e165df34aa4fda5936e940658030f83d%22%3Bs%3A10%3A%22ip_address%22%3Bs%3A9%3A%22127.0.0.1%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A118%3A%22Mozilla%2F5.0+%28Macintosh%3B+Intel+Mac+OS+X+10_7_3%29+AppleWebKit%2F535.19+%28KHTML%2C+like+Gecko%29+Chrome%2F18.0.1025.3+Safari%2F535.19%22%3Bs%3A13%3A%22last_activity%22%3Bi%3A1328291821%3B%7Dac0f163b112dbd3769e67f4bb7122db2
Host:dev.mapitusa.com
Origin:http://dev.mapitusa.com
Referer:http://dev.mapitusa.com/api_test.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.3 Safari/535.19
Response Headersview source
Cache-Control:max-age=0, public
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:69
Content-Type:application/json
Date:Fri, 03 Feb 2012 18:03:54 GMT
Expires:Fri, 03 Feb 2012 18:03:54 GMT
Keep-Alive:timeout=5, max=98
Server:Apache
Set-Cookie:ci_session=a%3A4%3A%7Bs%3A10%3A%22session_id%22%3Bs%3A32%3A%22f2f466f7b97b89f2a9b557d2d9a0dbcc%22%3Bs%3A10%3A%22ip_address%22%3Bs%3A9%3A%22127.0.0.1%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A118%3A%22Mozilla%2F5.0+%28Macintosh%3B+Intel+Mac+OS+X+10_7_3%29+AppleWebKit%2F535.19+%28KHTML%2C+like+Gecko%29+Chrome%2F18.0.1025.3+Safari%2F535.19%22%3Bs%3A13%3A%22last_activity%22%3Bi%3A1328292234%3B%7D6821b96c7e58b55f1767eb265ffdb79e; expires=Fri, 03-Feb-2012 20:03:54 GMT; path=/
Status:403
Vary:Accept-Encoding,User-Agent
X-Powered-By:PHP/5.3.6
X-UA-Compatible:IE=Edge,chrome=1
है, आप केवल डेटाबेस में जाम कर सकते हैं, अगर आप नहीं चाहते हैं तो आप एपीआई पीढ़ी नियंत्रक का उपयोग करने के लिए स्पष्ट रूप से नहीं हैं। असल में आप अपने आवेदन में यादृच्छिक कुंजी बना सकते हैं और उन्हें डीबी में भी फेंक सकते हैं। यह सामान्य है और आप जो भी पसंद कर सकते हैं;) –
मुझे एक ही समस्या है, मैं आपके जैसा कुंजी उत्पन्न करता हूं। मेरा काम नहीं कर रहा है, मेरी मदद करो –