php - 如何在php中获取http请求来源

标签 php apache http post get

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

相关文章:

php - "Proper"如何在PHP 网站应用程序中设置环境变量?

php - 在 Apache 上强制使用 HTTPS 并产生奇怪的结果

Apache ProxyPass : standalone vs location tag?

java - 添加 'Authorization' header 会导致 Spring Security 保护允许的端点

http - 为什么请求和响应会丢失?

php - 如何在 Wordpress 的 PHP if 语句中显示超链接?

php - 在 EasyPHP 服务器中从本地主机发送邮件

javascript - WordPress 主题中的 If else 语句

apache - 如何在 CentOS 7 上使用 python3.5 为 apache 2.4+ 安装 mod_wgsi

java - URL 请求参数 JSP 错误