最近有个页面,要请求第三方的一个api,
postman里测试返回结果正常,状态正常
可在php js前端请求,返回错误,取不到任何有用信息,status = 0.
没接触过跨域,一直以为第三方接口问题,
后来知道还有跨域这一说法,就是http请求其他主机地址,浏览器是不允许的,会返回错误
解决:
在后端页面用php转发前端的请求,并加入跨域的标志
public function send_RegisterPost() {
$url = 'http://www.baidu.com/text2audio';
$json = $this->input->post('json');
$postdata = http_build_query($json);
$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type:application/json',
'content' => $json,
'timeout' => 15 * 60 // 超时时间(单位:s)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$this->output->set_header("Access-Control-Allow-Origin: * ");
$data['dbData'] = $result;
out::code(10000,$data,"获取成功");
}
虽然前端ajax 还是在 error中,但status =200 statusText 是我需要的内容