首页 技术 php程序出现接口访问跨域的解决办法

php程序出现接口访问跨域的解决办法

技术 6520
广告一

我们通常在进行接口调用时,会出现报错:

Access to XMLHttpRequest at ‘http:/xxxxxxxxxx from origin ‘http://xxxxxxxxxx’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

这种错误就是表示出现了跨域。那么什么是跨域访问呢?

就是不同域名,端口之间相互调用数据,会出现验证失败的情况。

那么应该怎么解决跨域报错请求呢?

其实很简单,在php中设置头就行。

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
header('Access-Control-Allow-Headers:Origin,Content-Type,Accept,token,X-Requested-With,device');

借鉴其他答案,多域名实现跨域:

// 可跨域域名列表
$domains = [
'http://localhost:8080',
'http://test.qqqqq.cn',
];
$origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
if (in_array($origin, $domains)) {
header('Access-Control-Allow-Origin:' . $origin);
}
// 允许的请求头信息
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
//在请求头里加上需要允许的 header("Access-Control-Allow-Headers: Origin, 名称);
// 允许的请求类型
header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');
// 允许携带证书式访问(携带cookie)
header('Access-Control-Allow-Credentials:true');

以上就是关于php出现接口跨域的解决办法。

广告一