我想创建一个 API,并且要对 API 消费者进行身份验证,我将提供一个 API KEY、App-id 和 App-Secret。问题是我想知道 http 请求是从哪里来的,这样我就可以知道发出请求的主机是否是已注册的主机。例如:www.someone.com 有一个 app-id :0001,app-secret:1200 和 api-key:458。如果这个凭据被用来发出A请求,我想知道请求者是否真的是www.someone.com
最佳答案
一般来说,这个 header 应该可以完成这项工作。在此 header 中包含域名
header("Access-Control-Allow-Origin: " . $_SERVER['HTTP_ORIGIN'] . "");
// use domain name instead of $_SERVER['HTTP_ORIGIN'] above
但如果您想查看更多信息,请使用类似以下代码段的内容
$allowed = array('domain1', 'domain2', 'domain3');
if(isset($_SERVER['HTTP_ORIGIN']) && in_array($_SERVER['HTTP_ORIGIN'], $allowed)){
// SELECT credentials for this user account from database
if(isset($_GET['api_key'], $_GET['app_secret'])
&& $_GET['api_key'] == 'api_key_from_db'
&& $_GET['app_secret'] == 'app_secret_from_db'
){
// all fine
}else{
// not allowed
}
}else{
// not allowed
}
如果用户必须向您的服务传递更多数据,请使用 POST
而不是 GET
关于php - 如何在php中获取http请求来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25520085/