Migraine headaches seem to be caused in part by changes in the level of a body chemical called serotonin. Serotonin plays many roles in the body, and it can have an effect on the blood vessels. When serotonin levels are high, blood vessels constrict (shrink). When serotonin levels fall, the blood vessels dilate (swell). This swelling can cause pain or other problems.
Many things can affect the level of serotonin in your body, including your level of blood sugar, certain foods and changes in your estrogen level if you're a woman.