【问题标题】:Is possible to allows cors access from one domain only in php可以只在 php 中允许 cors 从一个域访问
【发布时间】:2016-11-04 08:35:29
【问题描述】:

我创建了一个 PHP RESP API 应用程序。我需要使用它的 API 从另一个域访问这个应用程序。是否可以在 Header 中指定 cors 域

<?php
 header("Access-Control-Allow-Origin: *");
 header("Access-Control-Allow-Headers: *");
 ...

上面的代码允许来自每个域的cors。但我只需要允许来自特定域的cors。

【问题讨论】:

  • 那么你应该指定域而不是“*”。
  • Access-Control-Allow-Origin 标头控制给定页面可以向哪些页面发送请求,除了原始页面。所以它控制“to”,而不是“from”。您需要在 API 中而不是在向该 API 发出请求的页面中指定此类标头。

标签: php


【解决方案1】:

试试下面的代码:

<?php
// Cross-Origin Resource Sharing Header
header('Access-Control-Allow-Origin: http://base.com');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept');
?>

【讨论】:

    【解决方案2】:

    这可能无法回答您的直接问题,但我个人使用以下内容来确保内容只有在正确的主机上才能发布。

    $host = 'example.com';
    
    if ($_SERVER['HTTP_HOST'] != $host) {
      header("Location: http://$host");
      exit;
    }
    

    在 .htaccess 中,我设置了 Header set X-Frame-Options "SAMEORIGIN" 以进一步限制访问。

    【讨论】:

      【解决方案3】:

      此问题的解决方案是使用 $_SERVER['HTTP_ORIGIN'] 变量来确定请求是否来自允许的域。然后它设置了这个:

      试试下面的代码:

       header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
      

      【讨论】:

      • $_SERVER['HTTP_ORIGIN'] 可以被欺骗。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 2020-11-21
      • 2014-08-10
      • 2020-05-03
      • 2016-08-03
      • 2018-06-26
      相关资源
      最近更新 更多