Hola!
Efectivamente, la funcion header requiere que previamente no hayas manejado NINGUNA etiqueta HTML, ni codigo php que genere visualizaciones (print,echo,etc.). Ya que si haz manejado algo de esto antes de tu header, te marca el error que comentas:
Ejemplo del buen uso:
Código PHP:
//previamente nada de HTML ni php (print,echo)
<?php
if ($_POST['variable']) {
header("Location: compras.php");
exit;
}
?>
//eso es todo
Enjoy! xD