请问下 php 怎么获取 ajax 请求 来源页面的 完整 url 地址啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问下 php 怎么获取 ajax 请求 来源页面的 完整 url 地址啊?相关的知识,希望对你有一定的参考价值。

比如 我从网站首页或某个文章页面
点击onclick 用jquery的ajax方法发送一个请求 给 getuserinfo_ajax.php

怎么才能在getuserinfo_ajax.php 文件中获取到 请求来源,即网站首页 或其他来源页的完整地址啊??

PHP在经常要用到上一页的地址,如在设置要登陆跳转的页面上。
$_SERVER['HTTP_REFERER'] //可以得到上一页的地址
$_SERVER[PHP_SELF] //得到当前页面地址
$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"] //这个可以得到带参数的地址
参考技术A $_SERVER['HTTP_REFERER'] //这个参数可以完全获取,页面来源

不过,需要注意,锚链接是不能获取的,
比如:xx.php?name=123#1234
获取的地址是 xx.php?name=123
因为锚链接是前台的东西,是不会发送到后台去的

PHP如何判断一个请求是不是来源于本域并且是ajax请求?

通过请求头的Referer属性可以获取来源,X-Requested-With属性(不代表ajax一定需要这个请求头属性)可以判断是否是ajax。但是请求头这种东西,也知道的,很容易伪造。如果仅仅是做业务上的判断,请求头就够了。 参考技术A 请自行验证一下
jquery中对于ajax是这样写的,xhr对象有setRequestHeader这个方法,设置头部:

if ( !options.crossDomain && !headers["X-Requested-With"] )
headers["X-Requested-With"] = "XMLHttpRequest";

// Set headers
for ( i in headers )
xhr.setRequestHeader( i, headers[ i ] );


所以如果在PHP端验证的话,是这样的:

public static function isAjax()
return 'XMLHttpRequest' == @$_SERVER['HTTP_X_REQUESTED_WITH'];

以上是关于请问下 php 怎么获取 ajax 请求 来源页面的 完整 url 地址啊?的主要内容,如果未能解决你的问题,请参考以下文章

php ajax post数据接收不到

php get请求并处理json

struts2拦截器过滤放行后ajax请求后参数丢了

如何通过php的curl模拟ajax请求,获取其返回值

我做php的,ajax传值乱码,乱码都是这种方式:%u5BB4,以%u开头的!请问怎么解决呀?

如何在vue里面访问php