如何在 php 中获取 http 请求源
我想创建一个 API,为了对 API 使用者进行身份验证,我将提供 API KEY、App-id 和 App-Secret。问题是我想知道http请求来自哪里,这样我就可以知道发出que请求的主机是否是注册的主机。例如:www.someone.com 具有app-id:0001,app-secret:1200和api-key:458。如果使用此凭据发出请求,我想知道请求者是否真的 www.someone.com
我想创建一个 API,为了对 API 使用者进行身份验证,我将提供 API KEY、App-id 和 App-Secret。问题是我想知道http请求来自哪里,这样我就可以知道发出que请求的主机是否是注册的主机。例如:www.someone.com 具有app-id:0001,app-secret:1200和api-key:458。如果使用此凭据发出请求,我想知道请求者是否真的 www.someone.com
通常,此标头应完成该工作。在此标头中包含域名
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
Laravel 5: in request method controller:
$origin = request()->headers->get('origin');