All Products
Search
Document Center

Edge Security Acceleration:Logika permintaan

Last Updated:Aug 27, 2026

Fungsi logika permintaan mengembalikan atribut dari permintaan saat ini, seperti alamat server dan klien, lokasi klien, URI permintaan, serta header permintaan. Bagian berikut menjelaskan sintaksis, parameter, contoh kode, dan nilai kembali setiap fungsi.

Indeks fungsi

Tabel berikut mencantumkan fungsi logika permintaan berdasarkan kategori, nilai yang dikembalikan oleh setiap fungsi, serta parameter yang diterima.

KategoriFungsiHasilParameter
Atribut serverserver_addrAlamat server yang menerima permintaan saat ini.Tidak ada
Atribut serverserver_portPort server yang menerima permintaan saat ini.Tidak ada
Atribut clientclient_addrAlamat IP client.Tidak ada
Atribut clientclient_portPort client.Tidak ada
Geolokasi clientclient_countryKode negara atau wilayah dari alamat IP client.Tidak ada
Geolokasi clientclient_regionKode pembagian administratif (provinsi atau kota) dari alamat IP client.Tidak ada
Geolokasi clientclient_cityKode kota dari alamat IP client.Tidak ada
Geolokasi clientclient_ispKode ISP dari alamat IP client.Tidak ada
Geolokasi alamat IP tertentuip_countryKode negara atau wilayah dari alamat IP yang ditentukan.ipaddr
Geolokasi alamat IP tertentuip_regionKode pembagian administratif (provinsi atau kota) dari alamat IP yang ditentukan.ipaddr
Geolokasi alamat IP tertentuip_cityKode kota dari alamat IP yang ditentukan.ipaddr
Geolokasi alamat IP tertentuip_ispKode ISP dari alamat IP yang ditentukan.ipaddr
Penguraian URIreq_uriURI permintaan, tidak termasuk parameter kueri.[pattern]
Penguraian URIreq_uri_basenameNama file dalam URI permintaan.[pattern]
Penguraian URIreq_uri_extEkstensi file dalam URI permintaan.[pattern]
Penguraian URIreq_uri_segSegmen URI permintaan, dipisahkan berdasarkan garis miring (/).[idx]
Penguraian URIreq_uri_argNilai dari parameter URI tertentu.name, [pattern]
Penguraian URIreq_uri_query_stringParameter kueri dari permintaan, tidak termasuk tanda tanya (?).[pattern]
Baris permintaan dan headerreq_schemeSkema permintaan.[pattern]
Baris permintaan dan headerreq_methodMetode permintaan.[pattern]
Baris permintaan dan headerreq_hostNilai header permintaan Host.[pattern]
Baris permintaan dan headerreq_user_agentNilai header permintaan User-Agent.[pattern]
Baris permintaan dan headerreq_refererNilai header permintaan Referer.[pattern]
Baris permintaan dan headerreq_cookieNilai cookie tertentu.name, [pattern]
Baris permintaan dan headerreq_first_x_forwardedAlamat pertama dalam header permintaan X-Forwarded-For.[pattern]
Baris permintaan dan headerreq_headerNilai header permintaan tertentu.name, [pattern]
Identifikasi permintaanreq_idID permintaan dari permintaan saat ini.Tidak ada

Pertimbangan

Batasan berikut berlaku untuk sembilan fungsi dalam topik ini: client_addr, client_country, client_region, client_city, client_isp, ip_country, ip_region, ip_city, dan ip_isp.

Penting

Jika alamat klien dimodifikasi oleh kebijakan NAT jaringan penyedia layanan Internet (ISP) atau jika alamat IP tidak terdapat dalam pustaka alamat IP CDN, nilai kembali aktual dari fungsi-fungsi ini akan terpengaruh. Gunakan fungsi-fungsi ini dengan hati-hati.

Pencocokan pola

Fungsi yang sintaksisnya mencakup parameter [pattern] menerima parameter opsional pattern. Saat Anda menentukan pattern, fungsi tersebut mencocokkan nilai yang dibacanya terhadap pattern dan mengembalikan hasil boolean alih-alih nilai itu sendiri.

pattern mendukung dua mode pencocokan:

  • Pencocokan eksak — Membandingkan nilai dengan pattern secara persis sama. Ini adalah mode default. Gunakan mode ini untuk memeriksa satu nilai tetap.

  • Pencocokan ekspresi reguler — Menggunakan pattern sebagai ekspresi reguler, diawali dengan re:. Gunakan mode ini untuk mencocokkan sekumpulan nilai.

Atribut server

server_addr dan server_port membaca atribut server yang menerima permintaan saat ini.

server_addr

server_addr membaca alamat server yang menerima permintaan saat ini.

  • Sintaksis — server_addr()

  • Parameter — Tidak ada.

  • Nilai kembali — Mengembalikan alamat server. Tipe data: string.

Contoh berikut menunjukkan cara menggunakan server_addr:

s_addr = server_addr()
say(concat('s_addr:', s_addr))

server_port

server_port membaca port server yang menerima permintaan saat ini.

  • Sintaksis — server_port()

  • Parameter — Tidak ada.

  • Nilai kembali — Mengembalikan port server. Tipe data: numerik.

Contoh berikut menunjukkan cara menggunakan server_port:

s_port = server_port()
say(concat('s_port:', tostring(s_port)))

Atribut client

client_addr dan client_port membaca alamat dan port klien yang mengirim permintaan saat ini.

client_addr

client_addr membaca alamat IP klien. Untuk membaca alamat pertama dalam header permintaan X-Forwarded-For alih-alih itu, gunakan req_first_x_forwarded.

  • Sintaksis — client_addr()

  • Parameter — Tidak ada.

  • Nilai kembali — Mengembalikan alamat IP klien. Tipe data: string.

    Untuk batasan akurasi yang berlaku pada client_addr, lihat Pertimbangan.

Contoh berikut menunjukkan cara menggunakan client_addr:

c_addr = client_addr()
say(concat('c_addr:', c_addr))

client_port

client_port membaca port klien.

  • Sintaksis — client_port()

  • Parameter — Tidak ada.

  • Nilai kembali — Mengembalikan port klien. Tipe data: numerik.

Contoh berikut menunjukkan cara menggunakan client_port:

c_port = client_port()
say(concat('c_port:', tostring(c_port)))

Geolokasi client

Fungsi geolokasi client_* membaca kode lokasi klien yang mengirim permintaan saat ini. Untuk menyelesaikan alamat IP yang Anda berikan sendiri, gunakan fungsi ip_* sebagai gantinya.

Untuk batasan akurasi yang berlaku pada fungsi-fungsi ini, lihat Pertimbangan.

client_country

client_country membaca kode negara atau wilayah dari alamat IP klien.

  • Sintaksis — client_country()

  • Parameter — Tidak ada.

  • Nilai kembali — Mengembalikan kode negara atau wilayah dari alamat IP klien. Tipe data: string. Untuk kode negara dan wilayah, lihat Kode negara.

Contoh berikut menunjukkan cara menggunakan client_country:

c_country = client_country()
if c_country {
    say(concat('client_country:', c_country))
}

client_region

client_region membaca kode pembagian administratif (provinsi atau kota) dari alamat IP klien.

  • Sintaksis — client_region()

  • Parameter — Tidak ada.

  • Nilai kembali — Mengembalikan kode pembagian administratif (provinsi atau kota) dari alamat IP klien. Tipe data: string. Untuk kode pembagian administratif, lihat Kode pembagian administratif.

Contoh berikut menunjukkan cara menggunakan client_region:

c_region = client_region()
if c_region {
    say(concat('client_region:', c_region))
}

client_isp

client_isp membaca kode ISP dari alamat IP klien.

  • Sintaksis — client_isp()

  • Parameter — Tidak ada.

  • Nilai kembali — Mengembalikan kode ISP dari alamat IP klien. Tipe data: string. Untuk kode ISP, lihat Kode ISP.

Contoh berikut menunjukkan cara menggunakan client_isp:

c_isp = client_isp()
if c_isp {
    say(concat('client_isp:', c_isp))
}

Geolokasi alamat IP tertentu

Fungsi ip_* membaca kode lokasi dari alamat IP yang Anda masukkan dalam parameter ipaddr. Untuk menyelesaikan klien yang mengirim permintaan saat ini, gunakan fungsi geolokasi client_* sebagai gantinya.

Untuk batasan akurasi yang berlaku pada fungsi-fungsi ini, lihat Pertimbangan.

ip_region

ip_region membaca kode pembagian administratif (provinsi atau kota) dari alamat IP tertentu.

  • Sintaksis — ip_region(ipaddr)

  • Parameter — ipaddr: string alamat IP dalam notasi desimal bertitik.

  • Nilai kembali — Mengembalikan kode pembagian administratif (provinsi atau kota) dari alamat IP yang ditentukan. Tipe data: string. Untuk kode pembagian administratif, lihat Kode pembagian administratif.

Contoh berikut menunjukkan cara menggunakan ip_region:

c_region = ip_region('192.168.0.1')
if c_region {
    say(concat('ip_region:', c_region))
}

ip_isp

ip_isp membaca kode ISP dari alamat IP tertentu.

  • Sintaksis — ip_isp(ipaddr)

  • Parameter — ipaddr: string alamat IP dalam notasi desimal bertitik.

  • Nilai kembali — Mengembalikan kode ISP dari alamat IP yang ditentukan. Tipe data: string. Untuk kode ISP, lihat Kode ISP.

Contoh berikut menunjukkan cara menggunakan ip_isp:

c_isp = ip_isp('192.168.0.1')
if c_isp {
    say(concat('ip_isp:', c_isp))
}

Penguraian URI

Fungsi-fungsi berikut membaca bagian-bagian individual dari URI permintaan, seperti path, nama file, ekstensi file, segmen path, parameter URI, dan string kueri.

req_uri

req_uri membaca URI permintaan, tidak termasuk parameter kueri.

  • Sintaksis — req_uri([pattern])

  • Parameter — pattern: pola yang digunakan untuk pencocokan. Untuk mode pencocokan yang didukung, lihat Pencocokan pola.

  • Nilai kembali

    • Tanpa pattern: mengembalikan URI permintaan. Tipe data: string.

    • Dengan pattern: mengembalikan true jika pencocokan berhasil, atau false jika pencocokan gagal. Tipe data: boolean.

Contoh berikut menunjukkan cara menggunakan req_uri:

# req_uri
say(concat('req_uri: ', req_uri()))
if req_uri('/path1/path2') {
    say('req_uri: plain match')
}
if req_uri('re:/path[0-9]/path[0-9]') {
    say('req_uri: regex match')
}

Contoh ini menghasilkan hasil berikut:

Request: /path1/path2?mode=ip
Response:
req_uri: /path1/path2
req_uri: plain match
req_uri: regex match

req_uri_basename

req_uri_basename membaca nama file dalam URI permintaan.

  • Sintaksis — req_uri_basename([pattern])

  • Parameter — pattern: pola yang digunakan untuk pencocokan. Untuk mode pencocokan yang didukung, lihat Pencocokan pola.

  • Nilai kembali

    • Tanpa pattern: mengembalikan nama file dalam URI permintaan. Tipe data: string.

    • Dengan pattern: mengembalikan true jika pencocokan berhasil, atau false jika pencocokan gagal. Tipe data: boolean.

Contoh berikut menunjukkan bagian mana dari URI permintaan yang merupakan nama file:

  • Untuk /document_detail/30360.html, nama filenya adalah 30360.

  • Untuk /M604/guopei_mp4/ZYJY2017BJGL0101/2-1_g.mp4, nama filenya adalah 2-1_g.

  • Untuk /tarball/foo.tar.bz2, nama filenya adalah foo.

Contoh berikut menunjukkan cara menggunakan req_uri_basename:

# req_uri_basename
basename = req_uri_basename()
say(concat('req_uri_basename: ', basename, ' ', len(basename)))
if req_uri_basename('foo') {
    say('req_uri_basename: plain match')
}
if req_uri_basename('re:^f.*') {
    say('req_uri_basename: regex match')
}

Contoh ini menghasilkan hasil berikut:

Request: /path1/path2/foo.tar.bz2
Response:
req_uri_basename: foo 3
req_uri_basename: plain match
req_uri_basename: regex match

req_uri_ext

req_uri_ext membaca ekstensi file dalam URI permintaan.

  • Sintaksis — req_uri_ext([pattern])

  • Parameter — pattern: pola yang digunakan untuk pencocokan. Untuk mode pencocokan yang didukung, lihat Pencocokan pola.

  • Nilai kembali

    • Tanpa pattern: mengembalikan ekstensi file dalam URI permintaan. Tipe data: string.

    • Dengan pattern: mengembalikan true jika pencocokan berhasil, atau false jika pencocokan gagal. Tipe data: boolean.

Contoh berikut menunjukkan bagian mana dari URI permintaan yang merupakan ekstensi file:

  • Untuk /document_detail/30360.html, ekstensi filenya adalah .html.

  • Untuk /M604/guopei_mp4/ZYJY2017BJGL0101/2-1_g.mp4, ekstensi filenya adalah .mp4.

  • Untuk /tarball/foo.tar.bz2, ekstensi filenya adalah .tar.bz2.

Contoh berikut menunjukkan cara menggunakan req_uri_ext:

# req_uri_ext
ext = req_uri_ext()
say(concat('req_uri_ext: ', ext, ' ', len(ext)))
if req_uri_ext('.tar.bz2') {
    say('req_uri_ext: plain match')
}
if req_uri_ext('re:\.tar\.bz[0-2]') {
    say('req_uri_ext: regex match')
}

Contoh ini menghasilkan hasil berikut:

Request: /path1/path2/foo.tar.bz2
Response:
req_uri_ext: .tar.bz2 8
req_uri_ext: plain match
req_uri_ext: regex match

req_uri_seg

req_uri_seg membagi URI permintaan berdasarkan garis miring (/) menjadi segmen-segmen.

Penting

Sebuah segmen dapat berisi hingga 128 karakter. Konten yang melebihi batas ini akan dibuang.

  • Sintaksis — req_uri_seg([idx])

  • Parameter — idx (opsional): menentukan indeks awal. Indeks segmen dimulai dari 1 dan meningkat dari awal URI permintaan, dari kiri ke kanan.

  • Nilai kembali

    • Tanpa idx: mengembalikan kamus yang berisi semua segmen. Tipe data: kamus.

    • Dengan idx: mengembalikan kamus yang berisi segmen-segmen mulai dari indeks yang ditentukan, termasuk segmen pada indeks tersebut. Tipe data: kamus.

Catatan

Saat Anda mengambil segmen pada indeks tertentu dari kamus yang dikembalikan, Anda harus memeriksa apakah segmen tersebut kosong.

Contoh berikut menunjukkan cara menggunakan req_uri_seg:

# req_uri_seg
def echo_each(k, v, u) {
    say(concat(get(u, 'msg'), ' : segs[', k, ']=', v))
}
# fetch all segments
segs = req_uri_seg()
foreach(segs, echo_each, ['msg'='req_uri_seg()'])
# fetch segments from idx 3
segs = req_uri_seg(3)
if get(segs, 3) {
    say(concat('req_uri_seg(3): segs[3]=', get(segs, 3)))
}
if get(segs, 4) {
    say(concat('req_uri_seg(3): segs[4]=', get(segs, 4)))
}
if get(segs, 5) {
    say(concat('req_uri_seg(3): segs[5]=', get(segs, 5)))
}

Contoh ini menghasilkan hasil berikut:

Request: /path1/path2/path3/path4?mode=req2
Response:
req_uri_seg() : segs[1]=path1
req_uri_seg() : segs[2]=path2
req_uri_seg() : segs[3]=path3
req_uri_seg() : segs[4]=path4
req_uri_seg(3): segs[3]=path3
req_uri_seg(3): segs[4]=path4

req_uri_arg

req_uri_arg membaca nilai dari parameter URI tertentu.

  • Sintaksis — req_uri_arg(name, [pattern])

  • Parameter

    • name: nama parameter.

    • pattern: pola yang digunakan untuk pencocokan. Untuk mode pencocokan yang didukung, lihat Pencocokan pola.

  • Nilai kembali

    • Tanpa pattern:

      • Parameter ada: mengembalikan nilai string dari parameter yang ditentukan oleh name. Tipe data: string.

      • Parameter tidak ada: mengembalikan false.

    • Dengan pattern:

      • Parameter ada: melakukan pencocokan dan mengembalikan true jika pencocokan berhasil, atau false jika pencocokan gagal. Tipe data: boolean.

      • Parameter tidak ada: mengembalikan false.

Contoh berikut menunjukkan cara menggunakan req_uri_arg:

# req_uri_arg
uid = req_uri_arg('uid')
if uid {
    say(concat('found uid ', uid))
} else {
    say('not found uid')
}
uid_chk = req_uri_arg('uid', '058334')
if uid_chk {
    say('check uid ok. plain mode')
} else {
    say('check uid fail. plain mode')
}
uid_chk = req_uri_arg('uid', 're:[0-9]+')
if uid_chk {
    say('check uid ok. regex mode')
} else {
    say('check uid fail. regex mode')
}

Contoh ini menghasilkan hasil berikut:

Request: /path1/path2/path3/path4?mode=req4&uid
Response:
not found uid
check uid fail. plain mode
check uid fail. regex mode

Request: /path1/path2/path3/path4?mode=req4&uid=
Response:
found uid
check uid fail. plain mode
check uid fail. regex mode

Request: /path1/path2/path3/path4?mode=req4&uid=12345
Response:
found uid 12345
check uid fail. plain mode
check uid ok. regex mode

req_uri_query_string

req_uri_query_string membaca parameter kueri dari permintaan, tidak termasuk tanda tanya (?).

  • Sintaksis — req_uri_query_string([pattern])

  • Parameter — pattern: pola yang digunakan untuk pencocokan. Untuk mode pencocokan yang didukung, lihat Pencocokan pola.

  • Nilai kembali

    • Tanpa pattern: mengembalikan parameter kueri dari permintaan. Tipe data: string.

    • Dengan pattern: mengembalikan true jika pencocokan berhasil, atau false jika pencocokan gagal. Tipe data: boolean.

Contoh berikut menunjukkan cara menggunakan req_uri_query_string:

# req_uri_query_string
say(concat('req_uri_query_string: ', req_uri_query_string()))
if req_uri_query_string('mode=') {
    say('check uri query string ok. plain mode')
} else {
    say('check uri query string fail. plain mode')
}
if req_uri_query_string('re:mode=[0-9a-z]+') {
    say('check uri query string ok. regex mode')
} else {
    say('check uri query string fail. regex mode')
}

Contoh ini menghasilkan hasil berikut:

Request: /path1/path2/path3/path4?mode=req5&token=34Deasd#243
Response:
req_uri_query_string: mode=req5&token=34Deasd
check uri query string fail. plain mode
check uri query string ok. regex mode

Baris permintaan dan header

Fungsi-fungsi berikut membaca atribut baris permintaan, nilai header permintaan, dan nilai cookie dari permintaan saat ini.

req_scheme

req_scheme membaca skema permintaan.

  • Sintaksis — req_scheme([pattern])

  • Parameter — pattern: pola yang digunakan untuk pencocokan. Untuk mode pencocokan yang didukung, lihat Pencocokan pola.

  • Nilai kembali

    • Tanpa pattern: mengembalikan skema permintaan. Tipe data: string.

    • Dengan pattern: mengembalikan true jika pencocokan berhasil, atau false jika pencocokan gagal. Tipe data: boolean.

Contoh berikut menunjukkan cara menggunakan req_scheme:

# req_scheme
say(concat('req_scheme: ', req_scheme()))
if req_scheme('https') {
    say('check scheme ok. plain mode')
} else {
    say('check scheme fail. plain mode')
}
if req_scheme('re:https?') {
    say('check scheme ok. regex mode')
} else {
    say('check scheme fail. regex mode')
}

Contoh ini menghasilkan hasil berikut:

Request: http://xx..
Response:
req_scheme: http
check scheme fail. plain mode
check scheme ok. regex mode

req_method

req_method membaca metode permintaan.

  • Sintaksis — req_method([pattern])

  • Parameter — pattern: pola yang digunakan untuk pencocokan. Untuk mode pencocokan yang didukung, lihat Pencocokan pola.

  • Nilai kembali

    • Tanpa pattern: mengembalikan metode permintaan. Tipe data: string.

    • Dengan pattern: mengembalikan true jika pencocokan berhasil, atau false jika pencocokan gagal. Tipe data: boolean.

Contoh berikut menunjukkan cara menggunakan req_method:

# req_method
say(concat('req_method: ', req_method()))
if req_method('GET') {
    say('check method ok. plain mode')
} else {
    say('check method fail. plain mode')
}
if req_method('re:(GET|POST)') {
    say('check method ok. regex mode')
} else {
    say('check method fail. regex mode')
}

Contoh ini menghasilkan hasil berikut:

Request: POST /xxxx/xxx
Response:
req_method: POST
check method fail. plain mode
check method ok. regex mode

req_host

req_host membaca nilai header permintaan Host.

  • Sintaksis — req_host([pattern])

  • Parameter — pattern: pola yang digunakan untuk pencocokan. Untuk mode pencocokan yang didukung, lihat Pencocokan pola.

  • Nilai kembali

    • Tanpa pattern: mengembalikan nilai header permintaan Host. Tipe data: string.

    • Dengan pattern: mengembalikan true jika pencocokan berhasil, atau false jika pencocokan gagal. Tipe data: boolean.

Contoh berikut menunjukkan cara menggunakan req_host:

# req_host
say(concat('req_host: ', req_host()))
if req_host('image.developer.aliyundoc.com') {
    say('check host ok. plain mode')
} else {
    say('check host fail. plain mode')
}
if req_host('re:.+\.y\.z\.com') {
    say('check host ok. regex mode')
} else {
    say('check host fail. regex mode')
}

Contoh ini menghasilkan hasil berikut:

Request: Host: image.developer.aliyundoc.com
Response:
req_host: image.developer.aliyundoc.com
check host fail. plain mode
check host ok. regex mode

req_user_agent

req_user_agent membaca nilai header permintaan User-Agent.

  • Sintaksis — req_user_agent([pattern])

  • Parameter — pattern: pola yang digunakan untuk pencocokan. Untuk mode pencocokan yang didukung, lihat Pencocokan pola.

  • Nilai kembali

    • Tanpa pattern: mengembalikan nilai header permintaan User-Agent. Tipe data: string.

    • Dengan pattern: mengembalikan true jika pencocokan berhasil, atau false jika pencocokan gagal. Tipe data: boolean.

Contoh berikut menunjukkan cara menggunakan req_user_agent:

# req_user_agent
say(concat('req_user_agent: ', req_user_agent()))
if req_user_agent('Mozilla') {
    say('check user_agent ok. plain mode')
} else {
    say('check user_agent fail. plain mode')
}
if req_user_agent('re:^Mozilla') {
    say('check user_agent ok. regex mode')
} else {
    say('check user_agent fail. regex mode')
}

Contoh ini menghasilkan hasil berikut:

Request: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Response:
req_user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
check user_agent fail. plain mode
check user_agent ok. regex mode

req_referer

req_referer membaca nilai header permintaan Referer.

  • Sintaksis — req_referer([pattern])

  • Parameter — pattern: pola yang digunakan untuk pencocokan. Untuk mode pencocokan yang didukung, lihat Pencocokan pola.

  • Nilai kembali

    • Tanpa pattern: mengembalikan nilai header permintaan Referer. Tipe data: string.

    • Dengan pattern: mengembalikan true jika pencocokan berhasil, atau false jika pencocokan gagal. Tipe data: boolean.

Contoh berikut menunjukkan cara menggunakan req_referer:

# req_referer
say(concat('req_referer: ', req_referer()))
if req_referer('https://example.aliyundoc.com/******00003') {
    say('check referer ok. plain mode')
} else {
    say('check referer fail. plain mode')
}
if req_referer('re:https://foo\.bar\.cn/\*+[0-9]+') {
    say('check referer ok. regex mode')
} else {
    say('check referer fail. regex mode')
}

Contoh ini menghasilkan hasil berikut:

Request: Referer: https://example.aliyundoc.com/******00003
Response:
req_referer: https://example.aliyundoc.com/******00003
check referer ok. plain mode
check referer fail. regex mode

req_first_x_forwarded

req_first_x_forwarded membaca alamat pertama dalam header permintaan X-Forwarded-For. Untuk membaca alamat IP klien sebagai gantinya, gunakan client_addr.

  • Sintaksis — req_first_x_forwarded([pattern])

  • Parameter — pattern: pola yang digunakan untuk pencocokan. Untuk mode pencocokan yang didukung, lihat Pencocokan pola.

  • Nilai kembali

    • Tanpa pattern: mengembalikan alamat pertama dalam header permintaan X-Forwarded-For. Tipe data: string.

    • Dengan pattern: mengembalikan true jika pencocokan berhasil, atau false jika pencocokan gagal. Tipe data: boolean.

Contoh berikut menunjukkan cara menggunakan req_first_x_forwarded:

# req_first_x_forwarded
say(concat('req_first_x_forwarded: ', req_first_x_forwarded()))
if req_first_x_forwarded('203.0.113.1') {
    say('check first_x_forwarded ok. plain mode')
} else {
    say('check first_x_forwarded fail. plain mode')
}
if req_first_x_forwarded('re:203.0.113.[0-9]') {
    say('check first_x_forwarded ok. regex mode')
} else {
    say('check first_x_forwarded fail. regex mode')
}

Contoh ini menghasilkan hasil berikut:

Request: X-Forwarded-For: 203.0.113.1, 10.10.10.10, 172.16.0.1
Response:
req_first_x_forwarded: 203.0.113.1
check first_x_forwarded ok. plain mode
check first_x_forwarded ok. regex mode

req_header

req_header membaca nilai header permintaan tertentu.

  • Sintaksis — req_header(name, [pattern])

  • Parameter

    • name: nama header permintaan. Ganti setiap tanda hubung (-) dalam nama header permintaan dengan garis bawah (_). Misalnya, X-USER-ID menjadi x_user_id.

    • pattern: pola yang digunakan untuk pencocokan. Untuk mode pencocokan yang didukung, lihat Pencocokan pola.

  • Nilai kembali

    • Tanpa pattern:

      • Header permintaan ada: mengembalikan nilai string dari header permintaan yang ditentukan oleh name. Tipe data: string.

      • Header permintaan tidak ada: mengembalikan false.

    • Dengan pattern:

      • Header permintaan ada: melakukan pencocokan dan mengembalikan true jika pencocokan berhasil, atau false jika pencocokan gagal. Tipe data: boolean.

      • Header permintaan tidak ada: mengembalikan false.

Contoh berikut menunjukkan cara menggunakan req_header:

# req_header
uid = req_header('x_uid')
if uid {
    say(concat('found header x-uid ', uid))
} else {
    say('not found header x-uid')
}
uid_chk = req_header('x_uid', 'es developer')
if uid_chk {
    say('check header x-uid ok. plain mode')
} else {
    say('check header x-uid fail. plain mode')
}
uid_chk = req_header('x_uid', 're:es [a-z]+')
if uid_chk {
    say('check header x-uid ok. regex mode')
} else {
    say('check header x-uid fail. regex mode')
}

Contoh ini menghasilkan hasil berikut:

Request: X-UID: es developer
Response:
found header x-uid es developer
check header x-uid ok. plain mode
check header x-uid ok. regex mode

Identifikasi permintaan

Fungsi berikut membaca ID permintaan dari permintaan saat ini.

req_id

req_id membaca ID permintaan, yaitu pengidentifikasi unik untuk setiap permintaan.

  • Sintaksis — req_id()

  • Parameter — Tidak ada.

  • Nilai kembali — Mengembalikan ID permintaan. Tipe data: string.

Contoh berikut menunjukkan cara menggunakan req_id:

# req_id
say(concat('req_id: ', req_id()))

Contoh ini mengembalikan req_id: 6451c43d15815890089411000e.