Winslow, who has a team-high 17 receptions for 169 yards and two touchdowns, will miss games against Pittsburgh, New England, Cincinnati and New Orleans. He'll be eligible to return to the Jets on Nov. 4, the day after the Jets host the Saints.
Winslow was suspended without pay, meaning he will lose $197,647 in salary.
In a statement from his publicist, Winslow apologized and said the news "came as a huge surprise."
"I have investigated all possible sources since learning of the positive test, including possible medical causes, but frustratingly, I do not know the source," Winslow said in the statement. "I do not take supplements that list any banned ingredients, but the NFL policy is very strict, so I am accountable for the results.
"I sincerely apologize to my teammates, coaches and Jets fans for this situation. I will work extremely hard during this time away from the field and look forward to contributing to the team as soon as the suspension ends."
The news was announced two hours after coach Rex Ryan's early afternoon news conference. Winslow was excused from practice on Friday morning, and was listed as doubtful on the team's official injury report. When asked for further information, Ryan was evasive.
"I'd rather not get into it," the coach said. "I excused him, I'll just say that."
The Jets signed Winslow to a one-year contract in June, following a three-day tryout. The 30-year-old was looking to resurrect his career, after playing in just one game last season, for the New England Patriots. After he was signed, Winslow said his goal was to catch 100 passes this year.
Winslow was the sixth overall pick in the 2004 draft by the Cleveland Browns, and made the Pro Bowl in 2007, when he had 82 catches for a career-high 1,106 yards and five touchdowns. But he has also worn out his welcome in multiple places, being traded away by the Browns and Tampa Bay Buccaneers, and subsequently released by the Seattle Seahawks and Patriots.
He has also been injury prone. Winslow broke his right leg just two games into his rookie season, and tore the ACL in his right knee in a motorcycle crash a year later. He's had multiple surgeries on that knee, and the Jets have been managing his practice time because of them.
Winslow is the second Jets player suspended by the NFL this season. Running back Mike Goodson was also banned four games for violating the NFL's policy and program for substances of abuse.
Without Winslow, the Jets will lean more heavily on tight end Jeff Cumberland, a four-year veteran who had three catches for a career-high 79 yards and a touchdown in a win against the Atlanta Falcons on Monday night.
Ryan praised Cumberland on Monday, before the announcement of Winslow's suspension.
"This is a guy who's a young stud tight end," Ryan said. "He's a big guy, can block, and he does a nice job receiving. So he's a good player."
The Jets also have Konrad Reuland and Zach Sudfeld at that position. Reuland had 11 catches for 83 yards last season as a rookie, and has one catch this year. Sudfeld, an undrafted rookie, was claimed off waivers from the Patriots last week, and Ryan said he would play if Winslow could not.
Information from ESPNNewYork.com's Rich Cimini was used in this report.