Как проверить URL-адрес ссылки, если HTTP_REFERER имеет значение NULL?

Я создаю API и намерен разрешить вызовы API из определенного домена. Я использую оператор «curl» для вызова API без установки заголовка:

curl_setopt($ch, CURLOPT_HEADER, 0);

Итак, когда я проверяю $_SERVER['HTTP_REFERER'], это «NULL»

Теперь, как проверить в PHP, сделан ли вызов из определенного домена?

Спасибо


person Kiran    schedule 17.07.2014    source источник
comment
Это (постоянно неправильно) пишется как HTTP_REFERER   -  person Niet the Dark Absol    schedule 17.07.2014


Ответы (2)


Вы должны проверить, стоит ли конкретный домен в DNS для $_SERVER['REMOTE_ADDR']

<?php
$ip = gethostbyname('www.example.com');
$valid_call = $ip == $_SERVER['REMOTE_ADDR'] ? true : false;

Помните, никогда не доверяйте заголовкам HTTP. Ими можно манипулировать, а IP - нет.

person Scony    schedule 17.07.2014

Есть 2 способа передать REFERER в заголовках с помощью cURL:

I. Вручную CURLOPT_REFERER

curl_setopt($ch, CURLOPT_REFERER, 'http://example.com');

II. Автоматически или используйте CURLOPT_AUTOREFERER.

curl_setopt($ch, CURLOPT_AUTOREFERER, правда);

см. документацию cURL setopt

person Vahe Shadunts    schedule 17.07.2014