你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
zkbhj - 凯冰科技站长
赞同来自:
/** * 网站请求,校验来源地址 * * @author wen gong<bestphper@126.com> * @param string $refWhiteList 域名白名单 * @return bool */ function checkrefer( $refWhiteList ){ //判断refer校验开关,是否开启 if( !defined( 'ENABLE_CHECKREFER' ) || ENABLE_CHECKREFER == false ){ return true; }else{ if(isset($_SERVER['HTTP_REFERER'])){ $ref = $_SERVER['HTTP_REFERER']; if( strpos( $ref, 'http://' ) !== 0 && strpos( $ref , 'https://' ) !== 0 ){ $ref = 'http://' . $ref; } foreach ( $refWhiteList as $item ){ if( preg_match( "/{$item}/i" , $ref ) ){ return true; } } return false; }else{ return false; } } } //使用实例 if( checkrefer( $refWhiteList ) ){ //请求来源合法 $re['msg']='success'; echo $_GET['callback'].'('.json_encode( $re ).')'; }else{ //请求来源非法 $re['msg']='error'; echo $_GET['callback'].'('.json_encode( $re ).')'; }
要回复问题请先登录或注册
凯冰科技站长
1 个回复
zkbhj - 凯冰科技站长
赞同来自:
简而言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。
PHP的$_SERVER['HTTP_REFERER'],记录了http的请来源地址。换一句话说就是可以得到链接/提交当前页的父页面URL。若不是从父页面提交过来的;比如是浏览器直接访问url地址则isset($_SERVER['HTTP_REFERER'])为假。若是ajax请求,$_SERVER['HTTP_REFERER']为发出ajax请求的页面url地址。利用这一特性我们就可以在写PHP接口的时候;为了安全性(防止其它网站来请求我们的接口),来做"请求来源地址"的校验。