我正在将我们的系统迁移到 Google App Engine。
当我们的 PDF 生成器需要外部资源(例如图片)时,它会执行内部 HTTP 请求(其中请求 IP 与用户 IP 不同)。然后它还会启动一个不同的会话,所以我看不到用户是否已登录。为了提供正确的权限,我需要检查请求是否来自服务器 IP。
在前面的代码中,我通过以下代码检查了这一点:
if($_SERVER['REMOTE_ADDR'] == $_SERVER['SERVER_ADDR']) {
return true;
}
但由于 $_SERVER['SERVER_ADDR'] 不可用,因此无法使用。
在新代码中,我通过以下代码检查这一点:
$allowed_ips = array(
'127.0.0.1',
'8.35.201.100'
);
if(in_array($_SERVER['REMOTE_ADDR'], $allowed_ips)) { return true; }
问题是; 我不知道 Google App Engine 使用哪些 IP 地址来执行内部请求。我发现 IP 地址 8.35.201.100 作为服务器地址,但是否有更多 IP 地址或范围。
任务队列 Google App Engine 从 IP 地址 0.1.0.2 ( https://developers.google.com/appengine/docs/php/taskqueue/overview-push#Task_Execution ) 发出请求。这在内部请求时是否相同。
问候,亨德里克