什么是X-FC-Nonce Header?PHP调用API缺失该Header如何解决?
X-FC-Nonce Header的作用
这个参数是接口提供方设置的防重放攻击校验参数,要求每次请求携带一个独一无二的随机字符串,避免请求被第三方截获后重复恶意提交。参数值没有固定格式要求,只要保证单次请求唯一即可,通常可以用时间戳+随机字符串拼接后生成。
代码修复方案
只需要先生成随机的nonce值,再将对应的请求头添加到curl的header配置中即可,修改后的完整代码如下:
// 生成唯一的X-FC-Nonce随机值 $nonce = md5(uniqid(mt_rand(), true)); $path = $_FILES["img"]["tmp_name"]; $type = pathinfo($path, PATHINFO_EXTENSION); $data = file_get_contents($path); $base64 = 'data:image/' . $type . ';base64,' . base64_encode($data); $curl_handle = curl_init(); curl_setopt($curl_handle, CURLOPT_URL, 'https://iai.flashsoftapi.com/v1/thai-id-card-ocr'); // 此处key:key请替换为你实际的接口授权密钥 curl_setopt($curl_handle,CURLOPT_USERPWD,'key:key'); curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array( 'Content-Type: application/x-www-form-urlencoded', // 新增缺失的X-FC-Nonce请求头 'X-FC-Nonce: '.$nonce )); curl_setopt($curl_handle, CURLOPT_POST, TRUE); curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $base64); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE); $text = curl_exec($curl_handle); curl_close($curl_handle); echo $text;
内容的提问来源于stack exchange,提问作者เอกราช สุขประเสริฐ
相关产品推荐
相关产品推荐

