¿Por qué se está aplicando la misma política de origen al realizar solicitudes de localhost a localhost?

Mantengo la API de backend como un proyecto separado de la aplicación HTML5 de frontend que la consume. Estoy usando Yeoman para el desarrollo frontend. Yeoman se ejecuta en localhost: 3501 y el backend en localhost: 3000. Cuando hago la solicitud de API desde el navegador (usando $ http de AngularJS), golpeo la misma política de origen:

XMLHttpRequest cannot load http://localhost:3000/venues. Origin http://localhost:3501 is not allowed by Access-Control-Allow-Origin.

AFAIK, la política del mismo origen debe activarse solo cuando se realiza una solicitud en diferentes dominios. ¿Por qué se queja cuando hacemos una solicitud de localhost a localhost (aunque a un puerto diferente)?

¿Cómo puedo hacer que esto funcione y causará problemas en la producción?

Respuestas a la pregunta(2)

Su respuesta a la pregunta