A short would blow the fuse for the lights.
Either the switch is faulty or the Ground is corroded.
There should be a Ground wire(large) from battery to engine block, also a ground strap from engine head to firewall.
Smaller ground wire from battery to body, usually radiator support frame, this would be the first ground I would check since the headlights would use this.
Look for whitish corrosion on/in the wires, if it is in the wire then replace wire