Считаются ли разные порты разными доменами

«Считаются ли разные порты разными доменами» — вопрос из категории Безопасность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Разные порты на одном домене не считаются разными доменами с точки зрения Same-Origin Policy.

Пример:
http://example.com:3000 и http://example.com:8080 имеют одинаковый origin (домен, протокол), несмотря на разные порты. Однако, если порт явно не указан, браузер использует стандартный (80 для HTTP, 443 для HTTPS).

Но! CORS и другие механизмы безопасности могут учитывать порты, если они явно заданы в заголовках. На практике большинство API требуют явного разрешения разных портов через Access-Control-Allow-Origin.

// Запрос с порта 3000 на порт 8080 того же домена:
fetch('http://example.com:8080/api')
  .then(response => response.json())
  .then(data => console.log(data));

Если сервер не разрешил порт 8080 в CORS, запрос будет заблокирован.