US President Donald Trump has described as a "slimeball" a journalist who quoted him as saying dead US soldiers were "losers" and "suckers".
He likened the Atlantic magazine report to unproven accusations made against him of colluding with Russia to win the presidential election of 2016.
The damning quotes were corroborated independently by The Associated Press.
Veterans' groups are among those condemning Mr Trump, less than two months from the 2020 election.
Progressive group VoteVets posted a video of families whose children had been killed in action. "You don't know what it is to sacrifice," says one.
Paul Rieckhoff of the Iraq & Afghanistan Veterans of America, tweeted: "Who is really surprised by this?"
A small group of protesters waved placards at the president's motorcade on Saturday near the Trump National Golf Club in Virginia.
Mr Trump has often staked a claim to strong support among the military, and last year Pew Research Center found that veterans were generally supportive of him as commander-in-chief, with 57% in favour. Three-fifths of the veterans identified as Republican, the research found.
What is Trump reported to have said?
According to The Atlantic, when Mr Trump cancelled a visit to the Aisne-Marne American Cemetery outside Paris in November 2018, 100 years after the end of World War One, he said it was "filled with losers".
Four sources told the magazine he had rejected the idea of visiting because the rain would dishevel his hair, and he did not believe it important to honour America's war dead.
During the same trip, the president also allegedly referred to 1,800 US soldiers who died at Belleau Wood as "suckers". The battle helped to prevent a German advance on Paris during World War One and is venerated by the US Marine Corps.
The Atlantic's reporting was based on anonymous sources but a "senior Defense Department official with first-hand knowledge of events" and a "senior U.S. Marine Corps officer who was told about Trump's comments" confirmed the cemetery comments to AP.
In 2018 the White House said the cemetery visit had been cancelled because bad weather had grounded the president's helicopter. This account was backed up in a recent book by President Trump's former national security adviser, John Bolton, who has been a vocal critic of Mr Trump.
The US Navy also said it cancelled the trip to the cemetery because of rain in response to a request under the Freedom of Information Act from Buzzfeed reporter Jason Leopold.
How did Trump react?
Without referring to Jeffrey Goldberg, the author of the Atlantic report, by name, he tweeted on Saturday: "You work so hard for the military, from completely rebuilding a depleted mess that was left by OBiden [the previous presidential administration when Joe Biden was vice-president to Barack Obama], to fixing a broken V.A. and fighting for large scale military pay raises, and then a slimeball reporter, maybe working with disgruntled people, makes up such a horrible charge.."
"This reminds me of the Dirty Dossier [the Steele dossier which alleged collusion with Russia], which was pushed hard by John McCain, & then with a thud turned out to be a total fraud. So many other scams also. The Radical Far Left is VICIOUS, they will do or say anything to win. But they won't, we will WIN, & have four great years!"
Mr Trump went on to attack another journalist, Jennifer Griffin of Fox News, normally one of the president's favourite news outlets.
Griffin had reported disparaging remarks about the US military allegedly made by Mr Trump on other occasions such as calling soldiers who fought in the Vietnam War "suckers".
"Jennifer Griffin should be fired for this kind of reporting," Mr Trump tweeted. "Never even called us for comment. @FoxNews is gone!"