??因為工作原因,需要調(diào)取阿里云OCR身份證識別,但是阿里云給的請求示例都是后臺調(diào)用的代碼,由于特殊原因,我需要的是前臺JS調(diào)用,所以決定自己嘗試一下,最后成功調(diào)用了,廢話不多說,直接上代碼。
var json = {
"image":imp,
"configure": "{\"side\":\"face\"}"
};
$.ajax({
crossDomain: true,
beforeSend: function(req) {
req.setRequestHeader("Content-Type", "application/octet-stream; charset=utf-8");
req.setRequestHeader("Authorization", "APPCODE AppCode值");
},
type: "POST",
url:"http://dm-51.data.aliyun.com/rest/160601/ocr/ocr_idcard.json",
dateType:"JSON",
data: JSON.stringify(json),
error: function(request) {
alert("識別失敗,請重新上傳照片或手動輸入");
},
success: function(data) {
var obj = JSON.parse(data);
document.getElementById('Name').value = obj.name;
document.getElementById('sex').value = obj.sex;
document.getElementById('national').value = obj.nationality;
document.getElementById('IdCard').value = obj.num;
document.getElementById('address').value = obj.address;
}
});
??通過查看阿里云的API接口說明,發(fā)現(xiàn)其調(diào)用地址:http://ai-market-ocr-person-id.icredit.link/ai-market/ocr/personid,請求方式為POST,返回類型為JSON,且請求數(shù)據(jù)為:
{
"image": "圖片二進制數(shù)據(jù)的base64編碼",
"configure": "{\"side\":\"face\"}" #正面/反面:face/back
}
??這些說明了Ajax的type,url 及 dateType,由于存在跨域問題,于是在Ajax中添加了crossDomain: true,但是發(fā)現(xiàn)還存在appcode認證問題,還好阿里云提供了一個調(diào)試工具,在調(diào)試工具中調(diào)試后發(fā)現(xiàn),appcode是寫在headers中的,且它的Content-Type為application/octet-stream; charset=utf-8,于是在Ajax中添加了:
beforeSend: function(req) {
req.setRequestHeader("Content-Type", "application/octet-stream; charset=utf-8");
req.setRequestHeader("Authorization", "APPCODE AppCode值");
}
??這樣就可以正常的傳值了,最后再對傳回的值做處理就可以了。