如何在 php 中获取 http 请求源

2022-08-30 17:34:50

我想创建一个 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


答案 1

通常,此标头应完成该工作。在此标头中包含域名

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
}

如果用户必须将更多数据传递给您的服务,请使用而不是POSTGET


答案 2

Laravel 5: in request method controller:

$origin = request()->headers->get('origin');

推荐