All Products
Search
Document Center

HTTPDNS:Menyelesaikan nama domain

Last Updated:Nov 10, 2025

Topik ini menjelaskan cara menggunakan API dari HTTPDNS untuk menyelesaikan nama domain.

Akses API

Peringatan

Jika Anda menggunakan API HTTP, Anda harus merujuk ke topik Praktik Terbaik. Jika tidak, risiko bisnis mungkin terjadi.

HTTPDNS menyediakan layanan resolusi nama domain melalui API HTTP. Anda dapat mengakses HTTPDNS secara langsung menggunakan alamat IP. Untuk informasi lebih lanjut tentang cara memperoleh alamat HTTPDNS terdekat secara real time, lihat Memperoleh Alamat HTTPDNS.

Bagian ini menggunakan alamat IP layanan 203.107.XXX.XXX sebagai contoh untuk menunjukkan cara mengakses layanan HTTPDNS.

Metode Permintaan: HTTP GET atau HTTPS GET. Harga kedua metode permintaan tersebut berbeda. Untuk informasi lebih lanjut, lihat Penagihan.

URL Layanan HTTP: http://203.107.XXX.XXX/{account_id}/d

URL Layanan HTTPS: https://203.107.XXX.XXX/{account_id}/d

Ganti {account_id} dengan Account ID HTTPDNS Anda. Anda dapat menemukan ID tersebut di Konsol HTTPDNS.

Tabel berikut menjelaskan parameter dalam URL.

Nama

Wajib

Deskripsi

host

Wajib

Nama domain yang ingin Anda selesaikan.

ip

Opsional

Alamat IP sumber. Jika parameter ini tidak ditentukan, alamat IP sumber dari permintaan digunakan secara default.

query

Opsional

Jenis alamat IP ke mana Anda ingin menyelesaikan nama domain. Nilai valid: 6 dan 4. Nilai 6 menunjukkan alamat IPv6, dan nilai 4 menunjukkan alamat IPv4.

Nilai default: 4.

Saat Anda mengakses HTTPDNS, Anda hanya dapat menyelesaikan satu nama domain pada satu waktu.

Contoh permintaan:

  • Contoh 1 (Sumber default): http://203.107.XXX.XXX/100000/d?host=www.aliyun.com

  • Contoh 2 (Sumber yang ditentukan): http://203.107.XXX.XXX/100000/d?host=www.aliyun.com&ip=42.120.XX.XXX

  • Contoh 3 (Jenis resolusi yang ditentukan): http://203.107.XXX.XXX/100000/d?host=www.aliyun.com&ip=219.242.XXX.XXX&query=4,6

  • Contoh 4 (IPv6): http://[2401:b180:2000:XXXX:XXXX]/100000/d?host=www.aliyun.com&ip=219.242.XXX.XXX&query=4,6

Respon API

  • Permintaan Berhasil

    Jika permintaan berhasil, kode status HTTP 200 dikembalikan. Respon dalam format JSON. Contoh:

    {
      "host":"www.aliyun.com",
      "ips":[
        "192.168.XX.234"
      ],
      "ipsv6":[
        "2400:3200:1300:0:0:0:XX:XX"
      ],
      "ttl":57,
      "origin_ttl":120
    }

    Tabel berikut menjelaskan parameter respon.

    Nama

    Deskripsi

    host

    Nama domain yang diselesaikan.

    ips

    Daftar alamat IPv4 yang dikembalikan. Daftar tersebut mungkin mencakup 0, 1, atau beberapa alamat IP. Parameter ini hanya dikembalikan jika nilai query adalah 4.

    ipsv6

    Daftar alamat IPv6 yang dikembalikan. Daftar tersebut mungkin mencakup 0, 1, atau beberapa alamat IP. Parameter ini hanya dikembalikan jika nilai query adalah 6.

    ttl

    Time to live (TTL) dari alamat IP yang dikembalikan.

    origin_ttl

    TTL asli dari nama domain. Nilai TTL nama domain dikonfigurasi pada server Sistem Nama Domain (DNS) otoritatif.

    Penting

    Nilai TTL nama domain mungkin gagal diperoleh karena backend layanan menyelesaikan nama domain yang berbeda dengan cara yang berbeda. Dalam hal ini, parameter ini tidak dikembalikan.

    Jika permintaan berhasil, bidang ips dalam respons mungkin berupa daftar kosong. Hal ini menunjukkan bahwa tidak ada alamat IP yang diperoleh untuk nama domain tersebut, yang dapat disebabkan oleh dua alasan utama:

    • Nama domain belum ditambahkan di konsol HTTPDNS. Kami sarankan Anda pergi ke konsol HTTPDNS untuk menambahkan nama domain.

    • Tidak ada alamat IP yang tersedia untuk nama domain, nama domain tidak terdaftar, atau tidak ada alamat IP yang dikonfigurasikan.

    Berikut contoh respons dengan bidang ips kosong:

    {
      "host":"www.aliyun.com",
      "ips":[],
      "ttl":300
    }

    Untuk menghindari resolusi domain yang sering, ikuti nilai TTL yang dikembalikan dalam hasil. Sebelum TTL habis, gunakan alamat IP yang di-cache. Setelah TTL habis, akses HTTPDNS untuk mendapatkan hasil resolusi terbaru.

  • Permintaan Gagal

    Jika permintaan gagal, kode status HTTP 4xx atau 5xx dikembalikan, dan kode kesalahan juga dikembalikan. Respon ditampilkan dalam format JSON.

    Contoh:

    {
      "code": "MissingArgument"
    }

    Tabel berikut menjelaskan kode kesalahan.

    Kode kesalahan

    Kode status HTTP

    Deskripsi

    MissingArgument

    400

    Satu atau lebih parameter wajib hilang.

    InvalidHost

    400

    Format nama domain tidak valid.

    TooManyHosts

    400

    Beberapa nama domain dilewatkan.

    SdnsNotSupported

    400

    Anda berada di negara atau wilayah di luar Tiongkok daratan di mana layanan Software-Defined Name System (SDNS) tidak tersedia.

    InvalidAccount

    403

    Akun tidak valid atau tidak ada.

    MethodNotAllowed

    405

    Metode HTTP tidak didukung.

    InternalError

    500

    Kesalahan internal terjadi di server.

Penanganan kesalahan

Saat menggunakan HTTPDNS, Anda harus menerapkan logika penanganan kesalahan untuk mengantisipasi pengecualian. Logika ini mencakup permintaan asinkron, percobaan ulang, atau degradasi.

  • Permintaan Asinkron

    Untuk mencegah dampak bisnis yang disebabkan oleh latensi tinggi, buat permintaan asinkron untuk mengakses HTTPDNS. Ini sangat membantu saat lingkungan jaringan abnormal atau alamat IP HTTPDNS tidak tersedia. Jika Anda membuat permintaan sinkron untuk mengakses HTTPDNS, Anda harus menunggu timeout jaringan sebelum kegagalan resolusi dikembalikan. Periode timeout ini dapat secara signifikan memengaruhi pengalaman pengguna.

    Implementasi: Jika alamat IP yang TTL-nya belum habis tersedia, gunakan alamat IP tersebut. Jika TTL semua alamat IP telah habis, turunkan permintaan untuk menggunakan resolusi DNS lokal asli dan mulai thread lain untuk memulai permintaan resolusi HTTPDNS secara asinkron. Dengan cara ini, cache diperbarui dan TTL dapat dipenuhi saat nama domain diselesaikan nanti.

  • Coba lagi

    Saat menggunakan HTTPDNS untuk menyelesaikan nama domain, jika permintaan ke server HTTPDNS gagal atau tidak ada permintaan HTTP yang dikembalikan, Anda dapat mencoba lagi.

    Dalam kebanyakan kasus, kegagalan ini disebabkan oleh masalah jaringan dan dapat diselesaikan setelah percobaan ulang.

  • Degradasi

    Jika HTTPDNS tidak mengembalikan alamat IP untuk suatu nama domain, Anda harus menggunakan metode resolusi terdegradasi, yaitu menggunakan DNS lokal untuk menyelesaikan nama domain tersebut.

    Permintaan ke HTTPDNS tidak mengembalikan alamat IP karena nama domain tidak ditambahkan ke konsol atau nama domain tidak ada. Gunakan metode resolusi degradasi untuk memastikan ketersediaan layanan.

Catatan penggunaan

  1. Pengaturan untuk Header HOST dalam Permintaan HTTP

    Melalui protokol HTTP standar, server menyelesaikan nilai header Host dalam permintaan HTTP sebagai informasi nama domain.

    Saat menggunakan HTTPDNS, Anda mungkin perlu mengganti parameter host dalam URL HTTP dengan alamat IP yang diperoleh melalui resolusi HTTPDNS. Dalam hal ini, pustaka jaringan standar menetapkan alamat IP ke header HOST dalam permintaan HTTP, yang menyebabkan kesalahan resolusi di server karena server mengenali nama domain Anda alih-alih alamat IP.

    Untuk mengatasi masalah ini, Anda dapat menentukan nilai header HOST dalam permintaan HTTP. Jika situs web Anda dilindungi oleh Alibaba Cloud Web Application Firewall (WAF), Anda harus menetapkan header HOST ke nama domain. Kode berikut menggunakan HttpURLConnection sebagai contoh.

    // Misalnya, nama domain www.example.com yang ingin Anda kunjungi diselesaikan menjadi alamat IP 192.168.XX.XX. 
    // Dalam kebanyakan kasus, jika Anda ingin menggunakan alamat IP untuk akses, Anda harus menetapkan header HOST dalam permintaan HTTP ke nama domain. 
    String fullPath ="http://192.168.XX.XX/";
    String host ="www.example.com";
    URL url =new URL(fullPath);
    HttpURLConnection conn =(HttpURLConnection) url.openConnection();
    // Tetapkan header Host dalam permintaan HTTP ke www.example.com.
    conn.setRequestProperty("Host", host);
  2. Header Cookie

    Pustaka jaringan tertentu mendukung manajemen penyimpanan otomatis cookie. Saat menggunakan HTTPDNS untuk membuat permintaan, pustaka jaringan ini menggunakan informasi alamat IP dalam URL Anda alih-alih header HOST dalam permintaan HTTP sebagai informasi nama domain untuk manajemen penyimpanan cookie. Hal ini dapat menyebabkan masalah dalam manajemen dan penggunaan cookie. Oleh karena itu, Anda harus menonaktifkan fitur manajemen cookie otomatis. Secara default, fitur ini dinonaktifkan.

  3. Menggunakan Nama Domain HTTPS

    Saat menggunakan protokol HTTPS, sistem memeriksa apakah nama domain Anda cocok dengan sertifikat. Jika Anda menggunakan alamat IP untuk membuat permintaan, pustaka jaringan memeriksa alamat IP tersebut. Ini menyebabkan pengecualian. Anda dapat menggunakan metode berikut untuk menyelesaikan masalah:

    1. Nonaktifkan HTTPDNS. Kami merekomendasikan agar Anda menggunakan metode ini.

    2. Ubah logika untuk memverifikasi sertifikat klien. Untuk informasi lebih lanjut, lihat

      1. Praktik Terbaik untuk HTTPDNS dan HttpURLConnection di Android

      2. Menggunakan HTTPDNS dalam Skenario iOS Native.

  4. Menggunakan Proxy

    Jika Anda menggunakan proxy HTTP perantara, URL jalur absolut digunakan dalam baris permintaan dari permintaan yang diinisiasi oleh klien. Saat Anda mengaktifkan HTTPDNS dan menggunakan alamat IP untuk akses, proxy mengidentifikasi informasi alamat IP Anda dan meneruskannya ke server tujuan sebagai informasi Host aktual. Dalam hal ini, server tujuan tidak dapat memproses permintaan HTTP semacam itu yang tidak memiliki informasi HOST aktual. Anda dapat menggunakan metode berikut untuk menyelesaikan masalah:

    1. Gunakan resolusi DNS asli untuk menghindari masalah ini.

    2. Ubah konfigurasi server, misalnya, tambahkan bidang header lain. Dalam hal ini, server melakukan verifikasi berdasarkan bidang header yang Anda tambahkan. Metode ini biasa digunakan untuk gateway WAP.

    Gateway WAP seluler menggunakan bidang protokol privat X-Online-Host untuk mengatasi masalah ini. Berikut contohnya:

    URL tujuan: http://www.example.com/product/oss/
    Alamat IP tempat www.example.com diselesaikan menggunakan HTTPDNS: 192.168.XX.XX
    Proxy: 10.0.XX.XX:XX
    Header permintaan HTTP:
    
    GET http://192.168.XX.XX/product/oss/ HTTP/1.1     # Header permintaan HTTP yang diprakarsai oleh proxy. Baris permintaan berisi jalur mutlak.
    Host: www.example.com                         # Header ini diabaikan oleh gateway proxy. Gateway proxy menggunakan informasi Host dalam baris permintaan sebagai host asal, yaitu 192.168.XX.XX.
    X-Online-Host: www.example.com                # Header ini adalah header privat yang ditambahkan oleh gateway seluler untuk mentransmisikan informasi Host yang sebenarnya. Header ini harus dikonfigurasi untuk asal. Dengan cara ini, asal dapat mengenali header untuk memperoleh informasi Host yang sebenarnya.

    Anda juga dapat menggunakan metode setRequestProperty untuk mengatur bidang header permintaan X-Online-Host.

    Catatan

    Dalam sebagian besar skenario, kami merekomendasikan agar Anda memeriksa apakah proxy jaringan diaktifkan untuk perangkat saat ini. Jangan gunakan HTTPDNS untuk resolusi nama domain dalam mode proxy.

  5. Untuk informasi tentang mode autentikasi untuk akses, lihat Mengimplementasikan Akses Autentikasi.