{
  "id": 6850681,
  "title": "Xiaohongshu share links have two domains, and one of them will fail silently",
  "url": "https://urgent.news/2026/09/12/xiaohongshu-share-links-have-two-domains-and-one-of-them-will-fail",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-12T02:33:42.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/programming_withjackche/xiaohongshu-share-links-have-two-domains-and-one-of-them-will-fail-silently-hpd"
  },
  "original_language": "en",
  "account": "Xiaohongshu, a social media platform, has two domains for its share links, but one of them fails silently. This issue was discovered on September 8, 2026, and September 10, 2026. The failure was experienced by a real user, and it cost the service the first person who ever signed up. The two domains, xhslink.com and xhslink.cn, share the same platform but have different URLs.\n\nWhen a user shares a note from the Xiaohongshu iOS app, the clipboard displays a URL like https://xhslink.cn/o/AxnRePgIokn. Older shares and links that travel through the desktop site use .com: https://xhslink.com/o/1WiQ1QI6Uc0. Both URLs are real and resolve to the same place. The .cn URL follows the .com one.\n\nTo understand why the failure is invisible, consider how a URL router works. A URL router usually looks for specific domains, and in this case, the router was designed to recognize either xiaohongshu.com or xhslink.com. However, the .cn domain was not recognized, and the request was handed off to a generic handler at the end of the chain. This handler fetched the page and extracted information from the HTML, which resulted in a 200 response. However, the actual post was not displayed, as the script tags were stripped from the page, leaving only 264 characters of navigation chrome. The note body, author, and other relevant information were missing.\n\nThe reason for this silent downgrade is that a generic extractor reads the wrapper, not the post. The transcript was present in the original post but was not included in the extracted data. In short, a silent downgrade is worse than a crash because it tells users their product can only do so much, rather than providing an error message prompting them to retry.\n\nTo avoid this issue, update your URL table to include both xhslink.com and xhslink.cn. If you expand short links before identifying content, ensure that both xhslink.cn and xhslink.com are in the set. A full test suite may not catch this issue because the test URLs were all .com, while the actual URLs used were a mix of .com and .cn. Additionally, be aware that your cache may still contain outdated information after deploying a parser fix. Make sure to decide whether to expand short links before or after computing the cache key.",
  "summary": "Originally published at linkdigest.dev , where I build this. Every number here came from a live link on 2026-09-08 and 2026-09-10. The failure described is one this service shipped to a real user. If you have a host table that maps domains to platforms, and Xiaohongshu is in it, check what you wrote. There is a good chance it says xhslink.com and nothing else. That was true here, and it cost us…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}