The House passed a $646 billion defense bill Thursday that supports the Pentagon's ambitious weapons acquisition program but would place new restrictions on foreign-made technology the military could buy.

The legislation, approved 397-27, has drawn a veto threat from the White House because of its "Buy American" provisions. The measure covers defense spending for the budget year that begins Oct. 1.

In recent years, the Defense Department and Congress have locked horns over this issue. Lawmakers want to protect suppliers in their districts; the Bush administration typically has sided with industry in opposing tough new restrictions.

In a statement, the White House said the House bill would "jeopardize our military readiness when our objective should be to enhance our ability to get the best capability for the warfighter at the best value for the taxpayer."

The White House also threatened a veto over proposed changes to the Pentagon's personnel policies. The legislation would restore collective bargaining rights and access to an appeals process for certain employees.

Rep. Ike Skelton, chairman of the House Armed Services Committee, said the veto threat was a disappointment, but noted the large majority backing the legislation.

"This is a strong bill that addresses our military's critical readiness needs, supports our troops in the field and at home and protects the American people," said Skelton, D-Mo.

The Senate Armed Services Committee is expected to complete its version of the legislation next week.

Overall, the House bill authorizes more than $100 billion in military procurement. That includes money to buy new protective vehicles and body armor for troops, and an additional $142 billion for the wars in Iraq and Afghanistan.

Despite the administration's opposition to certain parts of the bill, the legislation was an unusual display of bipartisanship in a Congress sharply divided on the Iraq war. The bill does not call for troop withdrawals, as many Democrats want, and was supported overwhelmingly by Republicans.

Skelton worked to keep the Iraq debate out of the bill to ensure the legislation's survival.

Bush this month vetoed the 2007 war spending bill because it included a deadline for troop withdrawals from Iraq.

Despite their general support for the bill, Republicans fiercely opposed a $764 million reduction in the Pentagon's $8.9 billion request for ballistic missile defense. A proposal by Rep. Trent Franks, R-Ariz., to restore the money failed.

Republicans were successful in adding money for missile defense programs when they tied the money to Israel. The House voted to increase the president's request by $205 million for U.S.-Israeli anti-missile programs.

The House also agreed to an amendment by Rep. James Moran, D-Va., aimed at pressuring the administration on its handling of military detainees at Guantanamo Bay prison in Cuba. The measure, approved by a 220-208 vote, calls for a plan to free prisoners slated for release by the end of the year.

The White House said it would veto any bill that prevents the detention of enemy combatants, but has not stated a position on Moran's amendment.

On Wednesday, the House adopted amendments intended to ease the stress of combat on troops and their families.

One measure would require that the Pentagon fly home the remains of soldiers killed in Iraq and Afghanistan to the airport that is closest to their families. A second would prevent deployed troops from permanently losing custody of their children.

Democrats were unsuccessful in adding amendments to prevent a military strike in Iran and to require the videotaping of military interrogations. The Iran measure failed after several members said they feared it would leave Israel vulnerable.