Перейти к содержимому

Ограничение публичного доступа

По умолчанию публичные URL принимают запросы без аутентификации. Чтобы потребовать токен песочницы, при её создании передайте false в allowPublicTraffic для JavaScript или allow_public_traffic для Python.

mjs
import { Sandbox } from "@abox-dev/sdk";

const sandbox = await Sandbox.create({
  network: { allowPublicTraffic: false },
});

try {
  await sandbox.commands.run("python3 -m http.server 8080", {
    background: true,
  });
  await sandbox.commands.run(
    "until curl -fsS http://127.0.0.1:8080/ >/dev/null; do sleep 0.1; done",
  );

  const url = `https://${sandbox.getHost(8080)}`;
  const anonymousResponse = await fetch(url);
  console.log(`Without token: ${anonymousResponse.status}`);

  const authorizedResponse = await fetch(url, {
    headers: {
      "Agentbox-Traffic-Access-Token": sandbox.trafficAccessToken,
    },
  });
  console.log(`With token: ${authorizedResponse.status}`);
} finally {
  await sandbox.kill();
}

Запрос без токена получает ответ 403. Передавайте токен в заголовке Agentbox-Traffic-Access-Token. Получите его из sandbox.trafficAccessToken или sandbox.traffic_access_token, но не выводите и не сохраняйте в журналах приложения.

Настройка защищает входящие запросы ко всем публичным URL песочницы. Она не отключает исходящий доступ в интернет и команды SDK. Исходящие соединения настраиваются отдельно в разделе «Доступ в интернет».