The House voted 224 to 194 to pass the resolution, roughly along the party line.
The resolution directs the president to terminate the use of U.S. military to engage in hostilities in or against Iran, unless the president gets authorization from Congress or the use of force is necessary.
The vote came days after a U.S. strike on Trump's order killed Qassem Soleimani, former commander of the Quds Force of Islamic Revolution Guards Corps, which has raised fears of an uncontrolled conflict between the United States and Iran.
Democratic Representative Elissa Slotkin, the lead sponsor of the resolution, said that "this resolution is intended to make clear that, if the President wants to take us to war, he must get authorization from Congress."
Slotkin, who previously worked for the Central Intelligence Agency and the U.S. Department of Defense, noted that the behavior of Soleimani did not mean that the Trump administration "can disregard the Constitution by engaging in a wider war, without consulting first with Congress."
Earlier in the day, Trump called on all Republican congressmen to vote against the resolution.
"Hope that all House Republicans will vote against Crazy Nancy Pelosi's War Powers Resolution," Trump tweeted, calling the vote "Presidential Harassment."
Most Republicans argued in the floor debate that the resolution was a show vote intended to undermine Trump.
The vote came one day after Democratic lawmakers, joined by several Republicans, voiced frustrations about the lack of information at a closed-door briefing on Iran from the administration officials.
"I find this (the briefing) insulting and demeaning, not personally, but to the office that each of the 100 senators in this building happens to hold," Republican Senator Mike Lee said after the briefing.