Previews are generated by the sender. The only network requests for the receiver are to Apple. Quoting from a January 2021 Project Zero blog post⁽¹⁾ on BlastDoor:
As an example, consider what happens when a user sends a link to a website over iMessage. In that case, the sending device will first render a preview of the webpage and collect some metadata about it (such as the title and page description), then pack those fields into an NSKeyedArchiver archive. This archive is then encrypted with a temporary key and uploaded to the iCloud servers. Finally, the link as well as the decryption key are sent to the receiver as part of the iMessage. In order to create a useful user notification about the incoming iMessage, this data has to be processed by the receiver on a 0-click code path. As that again involves a fair amount of complexity, it is also done inside BlastDoor: after receiving the BlastDoor reply from above and realizing that the message contains an attachment, imagent first instructs IMTransferAgent to download and decrypt the iCloud attachment.
⁽¹⁾ https://googleprojectzero.blogspot.com/2021/01/a-look-at-ime...
Keyword: over iMessage. What about normal SMS messages?