Memecahkan Masalah Proksi Dev

Gunakan panduan ini untuk mendiagnosis dan memperbaiki masalah Umum Dev Proxy. Mulailah dengan gejala Anda dan kerjakan pertanyaan diagnostik untuk menemukan solusinya.

Gejala: Dev Proxy tidak mencegat permintaan

Anda memulai Dev Proxy, tetapi permintaan aplikasi Anda tidak muncul di output Dev Proxy. Lakukan pertanyaan-pertanyaan ini untuk mengidentifikasi penyebabnya.

Apakah Dev Proxy berjalan?

Periksa apakah Dev Proxy berjalan dan siap untuk mencegat permintaan.

Apa yang harus dicari:

Setelah memulai Dev Proxy, Anda akan melihat output yang mirip dengan:

 info    Dev Proxy API listening on http://127.0.0.1:8897...
 info    Dev Proxy listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

Jika Anda tidak melihat output ini:

  • Periksa apakah Proksi Dev diinstal dengan benar dengan menjalankan devproxy --version
  • Jika Anda mendapatkan kesalahan, instal ulang Dev Proxy

Apakah Dev Proxy terdaftar sebagai proksi sistem?

Dev Proxy harus didaftarkan sebagai proksi sistem untuk mencegat permintaan secara otomatis. Jika bukan, permintaan aplikasi Anda tidak menggunakan Dev Proxy sama sekali.

Cara memeriksa macOS:

  1. Buka Pengaturan Sistem>Jaringan
  2. Pilih koneksi jaringan aktif Anda
  3. Buka Detail...>Proksi
  4. Cari Proksi HTTP Aman (HTTPS) yang diatur ke 127.0.0.1:8000

Cara memeriksa Windows:

  1. Buka PengaturanJaringan & InternetProksi
  2. Di bawah Penyiapan proksi manual, periksa apakah server proksi diatur ke 127.0.0.1:8000

Jika Dev Proxy tidak terdaftar sebagai proksi sistem:

Periksa konfigurasi Proksi Dev Anda. Jalankan devproxy config untuk membuka file konfigurasi dan verifikasi bahwa file tersebut tidak berisi:

{
  "asSystemProxy": false
}

Jika pengaturan ini ada dan diatur ke false, hapus atau atur ke true, lalu mulai ulang Proksi Dev.

Apakah Anda menonton URL yang benar?

Dev Proxy hanya mencegat permintaan ke URL yang sesuai pola konfigurasi di urlsToWatch.

Cara memeriksa:

  1. Lihat keluaran startup Dev Proxy untuk daftar URL yang sedang dipantau
  2. Bandingkan dengan URL yang dipanggil aplikasi Anda

Masalah umum:

  • Wildcard hilang: https://api.example.com tidak cocok dengan https://api.example.com/users. Gunakan https://api.example.com/* sebagai gantinya.
  • Domain yang salah: Periksa kembali nama domain, termasuk subdomain
  • HTTP vs HTTPS: Pastikan protokol cocok

Untuk menguji pola URL Anda:

devproxy --urls-to-watch "https://your-api.com/*"

Kemudian buat permintaan ke API Anda dan periksa apakah Dev Proxy mencatatnya.

Apakah Anda menggunakan file konfigurasi yang benar?

Proksi Dev mungkin menggunakan file konfigurasi yang berbeda dari yang Anda harapkan.

Cara Dev Proxy menemukan file konfigurasi:

  1. Jika Anda menentukan --config-file, Proksi Dev menggunakan file tersebut
  2. Jika tidak, Dev Proxy mencari devproxyrc.json di direktori saat ini
  3. Jika tidak ditemukan, Dev Proxy menggunakan pengaturan default

Untuk memverifikasi file konfigurasi mana yang sedang digunakan:

Jalankan Proxy Dev dengan log debug:

devproxy --log-level debug

Cari output yang menunjukkan file konfigurasi mana yang dimuat.

Untuk secara eksplisit menentukan file konfigurasi:

devproxy --config-file ./my-config.json

Apakah Anda menggunakan Dev Proxy dengan aplikasi Node.js?

Node.js tidak secara otomatis menggunakan pengaturan proksi sistem. Anda perlu mengonfigurasi aplikasi Node.js untuk menggunakan proksi secara eksplisit.

Solution:

Gunakan paket global-agent atau konfigurasikan pustaka HTTP Anda untuk menggunakan proksi. Lihat Menggunakan Dev Proxy dengan aplikasi Node.js untuk instruksi terperinci.

Solusi cepat dengan global-agent:

  1. Instalasi agen global:

    npm install global-agent
    
  2. Tambahkan ke titik masuk aplikasi Anda:

    import { bootstrap } from 'global-agent';
    bootstrap();
    
  3. Mulai aplikasi Anda dengan variabel lingkungan proksi:

    NODE_TLS_REJECT_UNAUTHORIZED=0 GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:8000 node app.js
    

Apakah Anda menggunakan Dev Proxy dengan PowerShell di Windows?

PowerShell tidak secara otomatis menggunakan pengaturan proksi sistem untuk permintaan web yang dibuat dengan Invoke-WebRequest atau Invoke-RestMethod.

Solution:

Konfigurasikan PowerShell untuk menggunakan proksi dengan mengatur -Proxy parameter:

Invoke-WebRequest -Uri "https://api.example.com/data" -Proxy "http://127.0.0.1:8000"

Atau atur proksi untuk seluruh sesi:

$env:HTTPS_PROXY = "http://127.0.0.1:8000"
$env:HTTP_PROXY = "http://127.0.0.1:8000"

Jika Anda menggunakan PowerShell 7+, Anda juga bisa menggunakan:

[System.Net.WebRequest]::DefaultWebProxy = New-Object System.Net.WebProxy("http://127.0.0.1:8000")

Platform dan kerangka kerja lainnya

Jika Anda menggunakan platform lain, periksa panduan berikut:

Platform Panduan
Aplikasi .NET Gunakan Dev Proxy dengan aplikasi .NET
Aplikasi .NET 4.8 Aplikasi .NET 4.8 memerlukan konfigurasi khusus
Kontainer Docker Menggunakan Proksi Dev dalam kontainer Docker
SharePoint Framework Menggunakan Dev Proxy dengan SPFx

Gejala: Permintaan dicegat tetapi dialihkan dalam keadaan tidak berubah

Dev Proxy menunjukkan permintaan Anda dalam output, tetapi tidak dimodifikasi, ditipu, atau mengembalikan kesalahan yang disimulasikan.

Apakah plugin Anda diaktifkan?

Periksa apakah plugin yang ingin Anda gunakan diaktifkan dalam konfigurasi Anda.

Cara memeriksa:

Buka file konfigurasi Anda dan verifikasi bahwa:

  1. Plugin tercantum dalam plugins array
  2. Plugin memiliki "enabled": true
{
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ]
}

Apakah plugin Anda dalam urutan yang benar?

Urutan plugin penting di Dev Proxy. Plugin dijalankan dalam urutan yang tercantum, dan beberapa plugin mungkin berhenti diproses sebelum yang lain berjalan.

Masalah umum:

Jika Anda memiliki MockResponsePlugin sebelum GenericRandomErrorPlugin, dan tiruan cocok dengan permintaan Anda, plugin kesalahan acak tidak pernah berjalan.

Solution:

Atur plugin dalam urutan yang Anda inginkan untuk memproses permintaan. Untuk informasi selengkapnya, lihat Mengapa kesalahan acak tidak dilemparkan saat menggunakan tiruan?.

Apakah pola URL tiruan Anda cocok dengan permintaan?

Untuk respons tiruan, pola URL harus sama persis dengan URL permintaan.

Hal-hal yang perlu diperiksa:

  • Parameter string kueri: https://api.example.com/users?id=1 tidak cocok https://api.example.com/users
  • Garis miring berikutnya: https://api.example.com/users/ tidak cocok https://api.example.com/users
  • Kepekaan huruf: Jalur URL peka terhadap huruf besar/kecil

Apakah metode permintaan sudah benar?

Tiruan khusus metode. Tiruan permintaan untuk GET tidak cocok dengan permintaan untuk POST.

Cara memeriksa:

Dalam file tiruan Anda, verifikasikan bahwa properti method sesuai dengan permintaan Anda.

{
  "request": {
    "url": "https://api.example.com/users",
    "method": "GET"
  },
  "response": {
    "statusCode": 200,
    "body": { "users": [] }
  }
}

Gejala: Kesalahan SSL/sertifikat di aplikasi Anda

Aplikasi Anda melemparkan kesalahan SSL atau sertifikat saat mencoba membuat permintaan melalui Dev Proxy.

Apakah Anda memiliki sertifikat Proksi Dev yang terinstal?

Dev Proxy menggunakan sertifikat yang ditandatangani sendiri untuk mendekripsi lalu lintas HTTPS. Sistem Anda harus mempercayai sertifikat ini.

Solution:

Jalankan perintah penginstalan sertifikat:

devproxy cert ensure

Perintah ini menginstal dan mempercayai sertifikat Dev Proxy pada sistem Anda.

Apakah sertifikat tepercaya?

Sertifikat mungkin diinstal tetapi tidak tepercaya.

Cara memeriksa macOS:

  1. Buka Keychain Access
  2. Cari "Dev Proxy"
  3. Klik dua kali pada sertifikat
  4. Perluas Kepercayaan
  5. Verifikasi bahwa Secure Sockets Layer (SSL) diatur ke Always Trust

Cara memeriksa Windows:

  1. Jalankan certmgr.msc
  2. Navigasi ke Otoritas Sertifikasi Akar Tepercaya>Sertifikat
  3. Cari sertifikat Proksi Dev

Jika sertifikat tidak tepercaya:

Hapus dan instal ulang sertifikat:

devproxy cert remove
devproxy cert ensure

Apakah Anda menggunakan Node.js?

Node.js tidak menggunakan penyimpanan sertifikat sistem secara default. Anda perlu memilih satu dari dua opsi berikut:

Opsi 1: Nonaktifkan validasi sertifikat (hanya pengembangan):

NODE_TLS_REJECT_UNAUTHORIZED=0 node app.js

Peringatan

Tidak pernah digunakan NODE_TLS_REJECT_UNAUTHORIZED=0 dalam produksi. Ini menonaktifkan semua validasi sertifikat.

Opsi 2: Tambahkan sertifikat Proksi Dev ke Node.js:

Ekspor sertifikat Proksi Dev dan atur NODE_EXTRA_CA_CERTS variabel lingkungan:

NODE_EXTRA_CA_CERTS=/path/to/devproxy-cert.pem node app.js

Apakah Anda menggunakan runtime atau kerangka kerja yang berbeda?

Platform yang berbeda menangani sertifikat secara berbeda:

Platform Solusi
Phyton Menggunakan REQUESTS_CA_BUNDLE variabel lingkungan atau SSL_CERT_FILE
Java Mengimpor sertifikat ke keystore Java menggunakan keytool
.NET Sertifikat biasanya dipercaya melalui penyimpanan sistem
Docker Memasang sertifikat dan memperbarui sertifikat CA dalam kontainer

Masalah umum lainnya

Semua permintaan gagal dengan batas waktu gateway

Penyebab:

Dev Proxy tidak dapat menjangkau API target.

Solution:

Lihat Mengapa semua permintaan gagal dengan batas waktu gateway?

Tidak ada koneksi internet setelah menggunakan Dev Proxy

Penyebab:

Proksi Dev tidak mendaftar ulang dengan benar sebagai proksi sistem.

Solution:

Lihat Mengapa koneksi internet saya tidak berfungsi setelah menggunakan proksi?

Mendapatkan 429 respons secara tak terduga

Penyebab:

Plugin pembatasan laju diaktifkan dan dikonfigurasi.

Solution:

Lihat Mengapa saya terus mendapatkan 429 respons?

Kesalahan database

Kesalahan Solusi
Kesalahan inisialisasi SqliteConnection Memperbaiki konfigurasi SQLite
"Gambar disk database salah bentuk" Membangun kembali database

Dapatkan bantuan lainnya

Jika Anda tidak dapat menemukan solusi:

  1. Aktifkan pengelogan debug: Jalankan devproxy --log-level debug untuk output terperinci
  2. Mencari masalah yang ada: Masalah Dev Proxy GitHub
  3. Minta bantuan: Dapatkan bantuan dan dukungan

Lihat juga