Laravel PHP获得referer

时间:2017-12-12 08:27:39

标签: php laravel http-headers cors

我在子域中有一个登录按钮,它在主域上调用AJAX请求。为了使CORS正常工作,我必须拥有正确的域名,以便在主域上验证它。

我无法使用确切的子域名,因为我有超过3k个子域名,这些子域名都可以有效地发出请求,而且我也无法动态地将它们全部添加到每个请求中,因为它会给它带来不必要的负担。

我想要的是一种从请求中以某种方式提取引用的方法,但$_SERVER['HTTP_REFERER']并不总是起作用。

是否有一些方法可以在每次都没有异常的情况下获取referer,这样我确定引用了referer?

如果没有,是否有办法强制将referer标头附加到请求?

2 个答案:

答案 0 :(得分:0)

是的,有一种简单的方法可以为请求强制附加引用标头。它只需要对前端代码进行一些小改动,而且非常简单:

只需将其作为URL参数添加即可明确发送引用。

http://www.yourdomain.com/login?referer=sub.yourdomain.com

查询参数已经在预检请求中发送,后端可以评估它们以设置正确的CORS标头。

答案 1 :(得分:0)

您可以根据自己的喜好使用以下内容

//Get the current URL without the query string.
url()->current();

//Get the current URL including the query string.
url()->full();

//Get the full URL for the previous request or the http refer er.
url()->previous();

还可以通过URL外观访问以下每种方法:

use Illuminate\Support\Facades\URL;
URL::current();
URL::full();
URL::previous();

Laravel Doc