$_SERVER['HTTP_ORIGIN'] 不起作用

Posted

技术标签:

【中文标题】$_SERVER[\'HTTP_ORIGIN\'] 不起作用【英文标题】:$_SERVER['HTTP_ORIGIN'] doesn't work$_SERVER['HTTP_ORIGIN'] 不起作用 【发布时间】:2017-05-05 00:11:39 【问题描述】:

当我使用$_SERVER['HTTP_ORIGIN']时。

echo $_SERVER['HTTP_ORIGIN'] ;

返回 注意:未定义索引:第 12 行 D:\xampp\htdocs\safe\test.php 中的 HTTP_ORIGIN

怎么了?!

【问题讨论】:

What is Wrong?! 使用 html sn-ps 显示 PHP 代码是错误的。 只是表示请求页面时没有提供Origin标头。 你用它做什么?也许我们可以提出一种替代方法。 这是因为您的浏览器没有发送原始请求。所以 php 不发送响应的来源。 使用if(isset($_SERVER['HTTP_ORIGIN'])) echo $_SERVER['HTTP_ORIGIN']; 【参考方案1】:

HTTP_ORIGIN 既不是由所有浏览器发送的,也不是安全可信的。你真的应该使用:

echo $_SERVER['HTTP_REFERER'];

这个问题发生在你身上,因为那个特定的浏览器没有设置原点。你也不信任HTTP_REFERER。它和前者一样不安全。

【讨论】:

只要您不信任浏览器设置的 HTTP_REFERER。可以伪造,或者经常被各种软件清空以确保安全 我认为我们同意。 @PraveenKumar 请查看此答案,甚至删除它,因为它具有误导性。 @PedroLobito 我猜您是否可以根据最新标准更新答案,或者我将其删除... :) @PraveenKumar 从来没有一种安全的方式使用HTTP_REFERER,因为它很容易被欺骗。我会删除答案。

以上是关于$_SERVER['HTTP_ORIGIN'] 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

http_origin可以被欺骗吗?

php:跨域

只获取指定的url

经实测解决Access-Control-Allow-Origin多域名跨域问题

如何使用 PHP 获取请求的来源?

HTTP_ORIGIN 的安全性如何?