Sửa lỗi "Error: XHR failed" trong VS Code khi cài đặt hoặc tìm kiếm Extensions

intermediate💻 VS Code2026-06-12| VS Code 1.80+ trên Windows 10/11, macOS, Linux — sau corporate proxy hoặc VPN

Error Message

Error: XHR failed
#extension#network#proxy

TL;DR

VS Code không kết nối được tới marketplace.visualstudio.com hoặc vscode.cdn.azure.cn. Các cách sửa nhanh nhất:

  • Cấu hình proxy trong settings VS Code: "http.proxy": "http://your-proxy:port"
  • Hoặc tắt hoàn toàn tính năng tự động nhận diện proxy: "http.proxySupport": "off"
  • Đặt "http.proxyStrictSSL": false nếu mạng có SSL inspection

Nguyên Nhân Gây Ra Lỗi

Khi nhấn Install để cài extension, VS Code sẽ gửi một XHR request tới Visual Studio Marketplace. Bất cứ thứ gì chặn request đó — proxy cấu hình sai, firewall, hay TLS handshake bị can thiệp — đều sinh ra cùng một lỗi khó hiểu:

Error: XHR failed

Các nguyên nhân phổ biến:

  • Chưa cấu hình proxy công ty: VS Code không tự kế thừa proxy hệ thống — đặc biệt trên macOS và Linux, nơi không có API proxy hệ thống thống nhất.
  • SSL/TLS inspection: Firewall công ty giải mã traffic HTTPS bằng CA nội bộ. VS Code mặc định không tin tưởng CA đó.
  • VPN chặn traffic ra ngoài: Một số cấu hình VPN split-tunnel chặn hoàn toàn các domain của Marketplace.
  • Lỗi phân giải IPv6: VS Code phân giải ra địa chỉ IPv6 mà mạng của bạn không định tuyến được.
  • Antivirus hoặc firewall: Phần mềm bảo mật bên thứ ba chặn các kết nối mạng của VS Code.

Cách Sửa 1: Cấu Hình Proxy Trong Settings VS Code

Mở file settings JSON (Ctrl+Shift+PPreferences: Open User Settings (JSON)) và thêm vào:

{
  "http.proxy": "http://proxy.yourcompany.com:8080",
  "http.proxyStrictSSL": false
}

Nếu proxy yêu cầu xác thực:

{
  "http.proxy": "http://username:password@proxy.yourcompany.com:8080",
  "http.proxyStrictSSL": false
}

Không muốn để thông tin đăng nhập trong settings.json? Hãy thiết lập proxy qua biến môi trường trước khi khởi động VS Code:

# Linux / macOS
export HTTPS_PROXY=http://proxy.yourcompany.com:8080
export HTTP_PROXY=http://proxy.yourcompany.com:8080
code .
:: Windows Command Prompt
set HTTPS_PROXY=http://proxy.yourcompany.com:8080
set HTTP_PROXY=http://proxy.yourcompany.com:8080
code .

Cách Sửa 2: Tắt Tự Động Nhận Diện Proxy

VS Code đôi khi nhận diện proxy sai — điều này hay xảy ra khi bạn chuyển đổi qua lại giữa mạng văn phòng và mạng ở nhà. Tắt tính năng tự động nhận diện để buộc kết nối trực tiếp:

{
  "http.proxySupport": "off"
}

Hữu ích khi bạn không dùng proxy nhưng VS Code lại nghĩ là có.

Cách Sửa 3: Tin Tưởng CA Certificate Tùy Chỉnh (SSL Inspection)

Các công cụ như Zscaler, Cisco Umbrella và Forcepoint thực hiện deep packet inspection. Chúng thay thế certificate TLS của Marketplace bằng certificate được ký bởi CA nội bộ của công ty — và VS Code từ chối vì CA đó không có trong trust store của nó.

Bước 1: Xuất certificate CA của công ty ra file .pem. Hỏi bộ phận IT, hoặc trích xuất từ certificate store của trình duyệt.

Bước 2: Cách giải quyết nhanh nhất là tắt strict SSL:

{
  "http.proxyStrictSSL": false
}

Bước 3: Để có cách sửa vẫn giữ nguyên xác thực certificate, dùng biến môi trường NODE_EXTRA_CA_CERTS thay thế:

# Linux / macOS (~/.bashrc hoặc ~/.zshrc)
export NODE_EXTRA_CA_CERTS=/path/to/company-ca.pem

# Windows (System Environment Variables)
NODE_EXTRA_CA_CERTS=C:\certs\company-ca.pem

Khởi động lại VS Code sau khi đặt biến. Cách này chỉ tin tưởng CA của bạn — xác thực SSL vẫn hoạt động bình thường ở mọi nơi khác.

Cách Sửa 4: Kiểm Tra DNS và Khả Năng Kết Nối Mạng

Trước khi điều chỉnh settings VS Code, hãy xác nhận rằng Marketplace thực sự có thể truy cập được từ máy của bạn:

# Kiểm tra phân giải DNS
nslookup marketplace.visualstudio.com

# Kiểm tra kết nối HTTPS
curl -v https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery

Nếu DNS thất bại, thử dùng resolver công cộng để xác định xem có phải DNS của công ty đang chặn không:

# Google DNS
nslookup marketplace.visualstudio.com 8.8.8.8

# Cloudflare DNS
nslookup marketplace.visualstudio.com 1.1.1.1

Nếu curl bị treo hoặc trả về lỗi kết nối, vấn đề nằm ở tầng mạng. VPN, firewall hoặc proxy của bạn đang chặn request. Hãy yêu cầu bộ phận mạng whitelist các domain sau:

  • marketplace.visualstudio.com
  • *.vscode.cdn.azure.cn (mirror Trung Quốc)
  • vscode.blob.core.windows.net
  • az764295.vo.msecnd.net (CDN)

Nếu bạn cần xác minh rằng mạng của mình có thể kết nối tới các dải CIDR hoặc subnet liên quan tới endpoint Azure CDN, Subnet Calculator trên ToolCraft có thể giúp bạn tính toán và xác thực dải IP mà không cần tải lên bất kỳ thứ gì.

Cách Sửa 5: Cài Extension Thủ Công (VSIX)

Đôi khi việc sửa mạng phải chờ đợi — ticket IT, phê duyệt VPN, hay bất cứ lý do gì. File VSIX cho phép bạn cài extension offline trong thời gian đó.

Bước 1: Trên máy có thể truy cập Marketplace, tải file .vsix từ VS Code Marketplace. Bạn cũng có thể tự tạo URL tải về trực tiếp:

https://marketplace.visualstudio.com/_apis/public/gallery/publishers/{publisher}/vsextensions/{extension}/{version}/vspackage

Bước 2: Sao chép file sang máy bị hạn chế mạng, rồi cài đặt:

# Qua command palette
Ctrl+Shift+P → "Extensions: Install from VSIX..."

# Hoặc qua CLI
code --install-extension path/to/extension.vsix

Kiểm Tra Kết Quả

Hãy kiểm tra lại sau khi sửa trước khi đóng terminal:

  • Mở panel Extensions (Ctrl+Shift+X)
  • Tìm kiếm một extension phổ biến như ESLint hoặc Prettier
  • Kết quả sẽ hiện ra trong vòng 2–3 giây
  • Nhấn Install vào bất kỳ extension nào — quá trình tải về sẽ không có thông báo lỗi

Vẫn thất bại? Mở network log của VS Code để xem chính xác request nào bị chặn:

Help → Toggle Developer Tools → Console tab

URL và HTTP status code của request thất bại sẽ cho bạn biết chính xác thứ gì đang bị chặn.

Tóm Tắt Nhanh

// settings.json — dán đoạn phù hợp với trường hợp của bạn

// Đang dùng proxy công ty
{
  "http.proxy": "http://proxy.example.com:8080",
  "http.proxyStrictSSL": false
}

// Không có proxy (kết nối trực tiếp)
{
  "http.proxySupport": "off"
}

// Tin tưởng CA cert của công ty qua biến môi trường
// NODE_EXTRA_CA_CERTS=/path/to/ca.pem (đặt trước khi khởi động VS Code)

Related Error Notes