根據文章HTTP access control (CORS)由MDN:
所有請求都必須設置Origin
頭CORS下正常工作(跨來源資源共享)機制。
的「起源」請求頭是RFC 6454部分和把它描述爲的CORS機構部分,並與根據MDN所有瀏覽器兼容。
說明通過MDN:
的Origin
請求報頭指示其中從取起源。它 不包含任何路徑信息,但只包含服務器名稱。這是與CORS請求一起發送的 以及POST請求。它類似於 到Referer頭部,但是,不像這個頭部,它沒有透露 整個路徑。
來源:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin
例由MDN:
因此,要獲得XHR請求的起源與PHP,你可以使用:
$_SERVER['HTTP_ORIGIN']
而且,在直接的情況下要求,你可以結合HTTP_REFERER
和REMOTE_ADDR
,如:
if (array_key_exists('HTTP_REFERER', $_SERVER)) {
$origin = $_SERVER['HTTP_REFERER'];
} else {
$origin = $_SERVER['REMOTE_ADDR'];
}
因此,可能最終的解決方案是:
if (array_key_exists('HTTP_ORIGIN', $_SERVER)) {
$origin = $_SERVER['HTTP_ORIGIN'];
}
else if (array_key_exists('HTTP_REFERER', $_SERVER)) {
$origin = $_SERVER['HTTP_REFERER'];
} else {
$origin = $_SERVER['REMOTE_ADDR'];
}
MDN是Mozilla Developer Network。
非常感謝@trine,@ waseem-bashir,@ p0lt10n和其他人。
從我所知道的,'$ _SERVER ['REMOTE_ADDR']'是你的解決方案,你只能得到IP而不是DNS – matiaslauriti