全部产品
Search
文档中心

CDN:Fungsi Logika Permintaan

更新时间:Jun 27, 2025

Topik ini menjelaskan sintaks, parameter, nilai kembali, serta memberikan contoh dari fungsi logika permintaan.

server_addr

Fungsi ini memeriksa alamat IP server yang menerima permintaan saat ini. Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

server_addr()

Parameter

Tidak ada

Contoh

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

Nilai kembali

Mengembalikan alamat IP server dalam bentuk string.

server_port

Fungsi ini memeriksa port server yang menerima permintaan saat ini. Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

server_port()

Parameter

Tidak ada

Contoh

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

Nilai kembali

Mengembalikan port server yang menerima permintaan saat ini. Tipe data: numerik.

client_addr

Penting

Peringatan: Nilai kembali mungkin tidak akurat karena alamat klien dapat diubah oleh aturan NAT dari penyedia layanan internet (ISP) atau alamat IP tidak berada dalam kolam alamat Alibaba Cloud CDN. Lanjutkan dengan hati-hati.

Fungsi ini memeriksa alamat IP klien. Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

client_addr()

Parameter

Tidak ada

Contoh

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

Nilai kembali

Mengembalikan alamat IP klien yang ditentukan dalam bentuk string.

client_port

Fungsi ini memeriksa port klien. Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

client_port()

Parameter

Tidak ada

Contoh

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

Nilai kembali

Mengembalikan port klien yang ditentukan. Tipe data: numerik.

client_country

Penting

Peringatan: Nilai kembali mungkin tidak akurat karena alamat klien dapat diubah oleh aturan NAT dari penyedia layanan internet (ISP) atau alamat IP tidak berada dalam kolam alamat Alibaba Cloud CDN. Lanjutkan dengan hati-hati.

Fungsi ini memeriksa kode negara dan kode pembagian administratif klien. Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

client_country()

Parameter

Tidak ada

Contoh

c_country = client_country()
c_region = client_region()
c_isp = client_isp()
if c_country {
    say(concat('client_country:', c_country))
}
if c_region {
    say(concat('client_region:', c_region))
}
if c_isp {
    say(concat('client_isp:', c_isp))
}

Nilai kembali

Mengembalikan kode negara dan kode pembagian administratif klien yang ditentukan dalam bentuk string. Untuk informasi lebih lanjut tentang kode negara dan kode pembagian administratif, lihat Kode Negara.

client_region

Penting

Peringatan: Nilai kembali mungkin tidak akurat karena alamat klien dapat diubah oleh aturan NAT dari penyedia layanan internet (ISP) atau alamat IP tidak berada dalam kolam alamat Alibaba Cloud CDN. Lanjutkan dengan hati-hati.

Fungsi ini memeriksa kode pembagian administratif klien. Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

client_region()

Parameter

Tidak ada

Contoh

c_country = client_country()
c_region = client_region()
c_isp = client_isp()
if c_country {
    say(concat('client_country:', c_country))
}
if c_region {
    say(concat('client_region:', c_region))
}
if c_isp {
    say(concat('client_isp:', c_isp))
}

Nilai kembali

Mengembalikan kode pembagian administratif klien yang ditentukan dalam bentuk string. Untuk informasi lebih lanjut tentang kode pembagian administratif, lihat Kode Pembagian Administratif.

client_isp

Penting

Peringatan: Nilai kembali mungkin tidak akurat karena alamat klien dapat diubah oleh aturan NAT dari penyedia layanan internet (ISP) atau alamat IP tidak berada dalam kolam alamat Alibaba Cloud CDN. Lanjutkan dengan hati-hati.

Fungsi ini memeriksa kode ISP klien. Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

client_isp()

Parameter

Tidak ada

Contoh

c_country = client_country()
c_region = client_region()
c_isp = client_isp()
if c_country {
    say(concat('client_country:', c_country))
}
if c_region {
    say(concat('client_region:', c_region))
}
if c_isp {
    say(concat('client_isp:', c_isp))
}

Nilai kembali

Mengembalikan kode ISP klien yang ditentukan dalam bentuk string. Untuk informasi lebih lanjut tentang kode ISP, lihat Kode ISP.

ip_region

Penting

Peringatan: Nilai kembali mungkin tidak akurat karena alamat klien dapat diubah oleh aturan NAT dari penyedia layanan internet (ISP) atau alamat IP tidak berada dalam kolam alamat Alibaba Cloud CDN. Lanjutkan dengan hati-hati.

Fungsi ini memeriksa kode pembagian administratif provinsi atau kota dari alamat IP yang ditentukan. Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

ip_region(ipaddr)

Parameter

ipaddr: menentukan alamat IP dalam notasi desimal bertitik.

Contoh

c_country = ip_country('192.168.0.1')
c_region = ip_region('192.168.0.1')
c_city = ip_city('192.168.0.1')
c_isp = ip_isp('192.168.0.1')
if c_country {
    say(concat('ip_country:', c_country))
}
if c_region {
    say(concat('ip_region:', c_region))
}
if c_city {
    say(concat('ip_city:', c_city))
}
if c_isp {
    say(concat('ip_isp:', c_isp))
}

Nilai kembali

Mengembalikan kode pembagian administratif provinsi atau kota dari alamat IP yang ditentukan dalam bentuk string. Untuk informasi lebih lanjut tentang kode pembagian administratif, lihat Kode Pembagian Administratif.

ip_isp

Penting

Peringatan: Nilai kembali mungkin tidak akurat karena alamat klien dapat diubah oleh aturan NAT dari penyedia layanan internet (ISP) atau alamat IP tidak berada dalam kolam alamat Alibaba Cloud CDN. Lanjutkan dengan hati-hati.

Fungsi ini memeriksa kode ISP dari alamat IP yang ditentukan. Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

ip_isp(ipaddr)

Parameter

ipaddr: menentukan alamat IP dalam notasi desimal bertitik.

Contoh

c_country = ip_country('192.168.0.1')
c_region = ip_region('192.168.0.1')
c_city = ip_city('192.168.0.1')
c_isp = ip_isp('192.168.0.1')
if c_country {
    say(concat('ip_country:', c_country))
}
if c_region {
    say(concat('ip_region:', c_region))
}
if c_city {
    say(concat('ip_city:', c_city))
}
if c_isp {
    say(concat('ip_isp:', c_isp))
}

Nilai kembali

Mengembalikan kode ISP dari alamat IP yang ditentukan dalam bentuk string. Untuk informasi lebih lanjut tentang kode ISP, lihat Kode ISP.

req_uri

Catatan penggunaan fungsi ini:

  • Jika parameter pola tidak termasuk dalam permintaan, URI permintaan dikembalikan tanpa parameter.

  • Jika parameter pola termasuk dalam permintaan, URI permintaan dibandingkan dengan kondisi kecocokan.

Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_uri([pattern])

Parameter

pattern: dibandingkan dengan kondisi kecocokan. Jenis kecocokan berikut didukung:

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis kecocokan default.

  • Ekspresi reguler: membandingkan nilai berdasarkan ekspresi reguler awalan yang ditentukan oleh re:.

Contoh

# 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')
}

Nilai kembali

  • Jika parameter pola tidak termasuk dalam permintaan, URI permintaan dikembalikan. Tipe data: string.

  • Jika parameter pola termasuk dalam permintaan dan permintaan cocok dengan kondisi kecocokan, nilai true dikembalikan. Jika tidak ada kondisi yang cocok, nilai false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: /path1/path2?mode=ip   
Respons:
req_uri: /path1/path2
req_uri: plain match
req_uri: regex match

req_uri_basename

Catatan penggunaan fungsi ini:

  • Mengembalikan nama file dalam URI permintaan jika parameter pola tidak termasuk dalam permintaan.

  • Membandingkan nama file dalam URI permintaan dengan kondisi kecocokan jika parameter pola termasuk dalam permintaan.

Contoh nama file:

  • Contoh 1: Untuk /document_detail/30360.html, nama file adalah 30360.

  • Contoh 2: Untuk /M604/guopei_mp4/ZYJY2017BJGL0101/2-1_g.mp4, nama file adalah 2-1_g.

  • Contoh 3: Untuk /tarball/foo.tar.bz2, nama file adalah foo.

Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_uri_basename([pattern])

Parameter

pattern: dibandingkan dengan kondisi kecocokan. Jenis kecocokan berikut didukung:

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis kecocokan default.

  • Ekspresi reguler: membandingkan nilai berdasarkan ekspresi reguler awalan yang ditentukan oleh re:.

Contoh

# 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')
}

Nilai kembali

  • Mengembalikan nama file dalam URI permintaan jika parameter pola tidak termasuk dalam permintaan. Tipe data: string.

  • Jika parameter pola termasuk dalam permintaan dan permintaan cocok dengan kondisi kecocokan, nilai true dikembalikan. Jika tidak ada kondisi yang cocok, nilai false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: /path1/path2/foo.tar.bz2
Respons:
req_uri_basename: foo 3
req_uri_basename: plain match
req_uri_basename: regex match

req_uri_ext

Catatan penggunaan fungsi ini:

  • Mengembalikan ekstensi dalam URI permintaan jika parameter pola tidak termasuk dalam permintaan.

  • Membandingkan ekstensi dalam URI permintaan dengan kondisi kecocokan jika parameter pola termasuk dalam permintaan.

Contoh ekstensi:

  • Contoh 1: Untuk /document_detail/30360.html, ekstensinya adalah .html.

  • Contoh 2: Untuk /M604/guopei_mp4/ZYJY2017BJGL0101/2-1_g.mp4, ekstensinya adalah .mp4.

  • Contoh 3: Untuk /tarball/foo.tar.bz2, ekstensinya adalah .tar.bz2.

Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_uri_ext([pattern])

Parameter

pattern: dibandingkan dengan kondisi kecocokan. Jenis kecocokan berikut didukung:

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis kecocokan default.

  • Ekspresi reguler: membandingkan nilai berdasarkan ekspresi reguler awalan yang ditentukan oleh re:.

Contoh

# 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')
}

Nilai kembali

  • Mengembalikan ekstensi dalam URI permintaan jika parameter pola tidak termasuk dalam permintaan. Tipe data: string.

  • Jika parameter pola termasuk dalam permintaan dan permintaan cocok dengan kondisi kecocokan, nilai true dikembalikan. Jika tidak ada kondisi yang cocok, nilai false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: /path1/path2/foo.tar.bz2
Respons:
req_uri_ext: .tar.bz2 8
req_uri_ext: plain match
req_uri_ext: regex match

req_uri_seg

Catatan penggunaan fungsi ini:

  • Dalam parameter respons, segmen dipisahkan oleh garis miring (/).

    • Mengembalikan semua segmen jika parameter idx tidak termasuk dalam permintaan.

    • Mengembalikan segmen (termasuk indeks) yang mengikuti indeks tertentu jika parameter idx termasuk dalam permintaan.

  • Indeks untuk paragraf: indeks dimulai dari 1 dan bertambah dari indeks paling kiri saat lebih banyak paragraf ditambahkan.

  • Batas paragraf: Paragraf dapat berisi hingga 128 karakter. Karakter yang melebihi batas ini dihapus.

Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_uri_seg([idx])

Parameter

idx: menentukan indeks awal. Parameter ini opsional.

Contoh

# req_uri_seg
def echo_each(k, v, u) {
    say(concat(get(u, 'msg'), ' : segs[', k, ']=', v))
}
# mengambil semua segmen
segs = req_uri_seg()
foreach(segs, echo_each, ['msg'='req_uri_seg()'])
# mengambil segmen dari 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)))
}

Nilai kembali

Tipe data: kamus. Paragraf yang relevan disertakan.

Catatan

Ketika fungsi mengambil paragraf dari kamus yang dikembalikan berdasarkan indeks yang ditentukan, fungsi memeriksa apakah paragraf tersebut kosong.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: /path1/path2/path3/path4?mode=req2
Respons:
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

Fungsi ini memeriksa nilai parameter yang ditentukan. Jika parameter pola termasuk dalam permintaan, nilai parameter yang ditentukan dibandingkan dengan kondisi kecocokan. Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_uri_arg(name, [pattern])

Parameter

  • name: nama parameter.

  • pattern: dibandingkan dengan kondisi kecocokan. Jenis kecocokan berikut didukung:

    • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis kecocokan default.

    • Ekspresi reguler: membandingkan nilai berdasarkan ekspresi reguler awalan yang ditentukan oleh re:.

Contoh

# 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')
}

Nilai kembali

  • Jika parameter pola tidak termasuk dalam permintaan

    • Parameter yang ditentukan ada: mengembalikan nilai parameter yang ditentukan oleh parameter name dalam bentuk string.

    • Parameter yang ditentukan tidak ada: mengembalikan nilai false.

  • Jika parameter pola termasuk dalam permintaan

    • Parameter yang ditentukan ada: mengembalikan nilai true jika nilainya cocok dengan kondisi kecocokan. Jika tidak, nilai false dikembalikan.

    • Parameter yang ditentukan tidak ada: mengembalikan nilai false.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

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

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

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

req_uri_query_string

Catatan penggunaan fungsi ini:

  • Jika parameter pola tidak termasuk dalam permintaan, parameter dalam permintaan dikembalikan tanpa tanda tanya (?).

  • Jika parameter pola termasuk dalam permintaan, parameter dalam permintaan dibandingkan dengan kondisi kecocokan.

Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_uri_query_string([pattern])

Parameter

pattern: dibandingkan dengan kondisi kecocokan. Jenis kecocokan berikut didukung:

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis kecocokan default.

  • Ekspresi reguler: membandingkan nilai berdasarkan ekspresi reguler awalan yang ditentukan oleh re:.

Contoh

# 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')
}

Nilai kembali

  • Mengembalikan parameter dalam permintaan jika parameter pola tidak termasuk dalam permintaan. Tipe data: string.

  • Jika parameter pola termasuk dalam permintaan dan permintaan cocok dengan kondisi kecocokan, nilai true dikembalikan. Jika tidak ada kondisi yang cocok, nilai false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

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

req_scheme

Catatan penggunaan fungsi ini:

  • Mengembalikan skema permintaan jika parameter pola tidak termasuk dalam permintaan.

  • Membandingkan skema permintaan dengan kondisi kecocokan jika parameter pola termasuk dalam permintaan.

Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_scheme([pattern])

Parameter

pattern: dibandingkan dengan kondisi kecocokan. Jenis kecocokan berikut didukung:

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis kecocokan default.

  • Ekspresi reguler: membandingkan nilai berdasarkan ekspresi reguler awalan yang ditentukan oleh re:.

Contoh

# 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')
}

Nilai kembali

  • Mengembalikan skema permintaan jika parameter pola tidak termasuk dalam permintaan. Tipe data: string.

  • Jika parameter pola termasuk dalam permintaan dan permintaan cocok dengan kondisi kecocokan, nilai true dikembalikan. Jika tidak ada kondisi yang cocok, nilai false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

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

req_method

Catatan penggunaan fungsi ini:

  • Mengembalikan metode permintaan jika parameter pola tidak termasuk dalam permintaan.

  • Membandingkan metode permintaan dengan kondisi kecocokan jika parameter pola termasuk dalam permintaan.

Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_method([pattern])

Parameter

pattern: dibandingkan dengan kondisi kecocokan. Jenis kecocokan berikut didukung:

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis kecocokan default.

  • Ekspresi reguler: membandingkan nilai berdasarkan ekspresi reguler awalan yang ditentukan oleh re:.

Contoh

# 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')
}

Nilai kembali

  • Mengembalikan metode permintaan jika parameter pola tidak termasuk dalam permintaan. Tipe data: string.

  • Jika parameter pola termasuk dalam permintaan dan permintaan cocok dengan kondisi kecocokan, nilai true dikembalikan. Jika tidak ada kondisi yang cocok, nilai false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: POST /xxxx/xxx
Respons:
req_method: POST
check method fail. plain mode
check method ok. regex mode

req_host

Catatan penggunaan fungsi ini:

  • Mengembalikan nilai header permintaan Host jika parameter pola tidak termasuk dalam permintaan.

  • Membandingkan nilai header permintaan Host dengan kondisi kecocokan jika parameter pola termasuk dalam permintaan.

Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_host([pattern])

Parameter

pattern: dibandingkan dengan kondisi kecocokan. Jenis kecocokan berikut didukung:

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis kecocokan default.

  • Ekspresi reguler: membandingkan nilai berdasarkan ekspresi reguler awalan yang ditentukan oleh re:.

Contoh

# 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')
}

Nilai kembali

  • Mengembalikan nilai header permintaan Host jika parameter pola tidak termasuk dalam permintaan. Tipe data: string.

  • Jika parameter pola termasuk dalam permintaan dan permintaan cocok dengan kondisi kecocokan, nilai true dikembalikan. Jika tidak ada kondisi yang cocok, nilai false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: Host: image.developer.aliyundoc.com
Respons:
req_host: image.developer.aliyundoc.com
check host fail. plain mode
check host ok. regex mode

req_user_agent

Catatan penggunaan fungsi ini:

  • Mengembalikan nilai header permintaan User-Agent jika parameter pola tidak termasuk dalam permintaan.

  • Membandingkan nilai header permintaan User-Agent dengan kondisi kecocokan jika parameter pola termasuk dalam permintaan.

Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_user_agent([pattern])

Parameter

pattern: dibandingkan dengan kondisi kecocokan. Jenis kecocokan berikut didukung:

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis kecocokan default.

  • Ekspresi reguler: membandingkan nilai berdasarkan ekspresi reguler awalan yang ditentukan oleh re:.

Contoh

# 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')
}

Nilai kembali

  • Mengembalikan nilai header permintaan User-Agent jika parameter pola tidak termasuk dalam permintaan. Tipe data: string.

  • Jika parameter pola termasuk dalam permintaan dan permintaan cocok dengan kondisi kecocokan, nilai true dikembalikan. Jika tidak ada kondisi yang cocok, nilai false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Respons:
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

Catatan penggunaan fungsi ini:

  • Mengembalikan nilai header permintaan Referer jika parameter pola tidak termasuk dalam permintaan.

  • Membandingkan nilai header permintaan Referer dengan kondisi kecocokan jika parameter pola termasuk dalam permintaan.

Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_referer([pattern])

Parameter

pattern: dibandingkan dengan kondisi kecocokan. Jenis kecocokan berikut didukung:

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis kecocokan default.

  • Ekspresi reguler: membandingkan nilai berdasarkan ekspresi reguler awalan yang ditentukan oleh re:.

Contoh

# 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')
}

Nilai kembali

  • Mengembalikan nilai header permintaan Referer jika parameter pola tidak termasuk dalam permintaan. Tipe data: string.

  • Jika parameter pola termasuk dalam permintaan dan permintaan cocok dengan kondisi kecocokan, nilai true dikembalikan. Jika tidak ada kondisi yang cocok, nilai false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

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

req_cookie

Fungsi ini memeriksa nilai cookie yang ditentukan. Jika parameter pola termasuk dalam permintaan, nilai cookie yang ditentukan dibandingkan dengan kondisi kecocokan. Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_cookie(name, [pattern])

Parameter

  • name: menentukan nama cookie.

  • pattern: dibandingkan dengan kondisi kecocokan. Jenis kecocokan berikut didukung:

    • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis kecocokan default.

    • Ekspresi reguler: membandingkan nilai berdasarkan ekspresi reguler awalan yang ditentukan oleh re:.

Contoh

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

Nilai kembali

  • Jika parameter pola tidak termasuk dalam permintaan

    • Cookie yang ditentukan ada: mengembalikan nilai cookie yang ditentukan oleh parameter name dalam bentuk string.

    • Parameter yang ditentukan tidak ada: mengembalikan nilai false.

  • Jika parameter pola termasuk dalam permintaan

    • Parameter yang ditentukan ada: mengembalikan nilai true jika nilainya cocok dengan kondisi kecocokan. Jika tidak, nilai false dikembalikan.

    • Parameter yang ditentukan tidak ada: mengembalikan nilai false.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: Cookie: uid=123456; token=value2
Respons:
found cookie uid 123456
check cookie uid fail. plain mode
check cookie uid ok. regex mode

req_first_x_forwarded

Catatan penggunaan fungsi ini:

  • Mengembalikan alamat pertama dalam header permintaan X-Forwarded-For jika parameter pola tidak termasuk dalam permintaan.

  • Membandingkan alamat pertama dalam header permintaan X-Forwarded-For dengan kondisi kecocokan jika parameter pola termasuk dalam permintaan.

Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_first_x_forwarded_addr([pattern])

Parameter

pattern: dibandingkan dengan kondisi kecocokan. Jenis kecocokan berikut didukung:

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis kecocokan default.

  • Ekspresi reguler: membandingkan nilai berdasarkan ekspresi reguler awalan yang ditentukan oleh re:.

Contoh

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

Nilai kembali

  • Mengembalikan alamat pertama dalam header permintaan X-Forwarded-For jika parameter pola tidak termasuk dalam permintaan. Tipe data: string.

  • Jika parameter pola termasuk dalam permintaan dan permintaan cocok dengan kondisi kecocokan, nilai true dikembalikan. Jika tidak ada kondisi yang cocok, nilai false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: X-Forwarded-For: 1.1.X.X, 10.10.10.10, 172.16.0.1
Respons:
req_first_x_forwarded: 1.1.X.X
check first_x_forwarded ok. plain mode
check first_x_forwarded ok. regex mode

req_header

Fungsi ini memeriksa nilai header permintaan yang ditentukan. Jika parameter pola termasuk dalam permintaan, nilai header permintaan yang ditentukan dibandingkan dengan kondisi kecocokan. Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_header(name, [pattern])

Parameter

  • name: menentukan nama header permintaan.

    Ganti tanda hubung (-) di header permintaan dengan garis bawah (_). Contohnya, X-USER-ID harus diubah menjadi x_user_id.

  • pattern: dibandingkan dengan kondisi kecocokan. Jenis kecocokan berikut didukung:

    • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis kecocokan default.

    • Ekspresi reguler: membandingkan nilai berdasarkan ekspresi reguler awalan yang ditentukan oleh re:.

Contoh

# 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')
}

Nilai kembali

  • Jika parameter pola tidak termasuk dalam permintaan

    • Header permintaan yang ditentukan ada: mengembalikan nilai header permintaan yang ditentukan oleh parameter name dalam bentuk string.

    • Parameter yang ditentukan tidak ada: mengembalikan nilai false.

  • Jika parameter pola termasuk dalam permintaan

    • Parameter yang ditentukan ada: mengembalikan nilai true jika nilainya cocok dengan kondisi kecocokan. Jika tidak, nilai false dikembalikan.

    • Parameter yang ditentukan tidak ada: mengembalikan nilai false.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

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

req_id

Fungsi ini memeriksa ID Eagle Eye dari permintaan. Setiap ID Eagle Eye secara unik mengidentifikasi sebuah permintaan. Tabel berikut menggambarkan detail fungsi ini.

Item

Deskripsi

Sintaks

req_id()

Parameter

Tidak ada

Contoh

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

Nilai kembali

Mengembalikan ID permintaan dalam bentuk string. Dalam contoh ini, ID permintaan adalah req_id: 6451c43d15815890089411000e.