All Products
Search
Document Center

Server Load Balancer:Fungsi Logika Permintaan

Last Updated:Jun 27, 2025

Topik ini menjelaskan sintaks, fitur, parameter, dan nilai balikan dari fungsi logika permintaan, serta menyediakan contoh penggunaannya.

server_addr

Item

Deskripsi

Sintaks

server_addr()

Deskripsi

server_addr digunakan untuk memeriksa alamat IP server yang menerima permintaan saat ini.

Parameter

Tidak ada

Contoh

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

Nilai balikan

Alamat IP server. Tipe data: string.

server_port

Item

Deskripsi

Sintaks

server_port()

Deskripsi

server_port digunakan untuk memeriksa port server yang menerima permintaan saat ini.

Parameter

Tidak ada

Contoh

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

Nilai balikan

Port server yang menerima permintaan saat ini. Tipe data: numerik.

client_addr

Penting

Jika NAT dikonfigurasikan, alamat IP yang dikembalikan oleh client_addr mungkin bukan alamat IP klien yang sebenarnya.

Item

Deskripsi

Sintaks

client_addr()

Deskripsi

client_addr digunakan untuk memeriksa alamat IP klien.

Parameter

Tidak ada

Contoh

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

Nilai balikan

Alamat IP klien. Tipe data: string.

client_port

Item

Deskripsi

Sintaks

client_port()

Deskripsi

client_port digunakan untuk memeriksa port klien.

Parameter

Tidak ada

Contoh

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

Nilai balikan

Port klien. Tipe data: numerik.

req_uri

Item

Deskripsi

Sintaks

req_uri([pattern])

Deskripsi

  • Jika parameter pattern tidak disertakan dalam permintaan, URI permintaan akan dikembalikan tanpa parameter.

  • Jika parameter pattern disertakan dalam permintaan, URI permintaan dibandingkan dengan kondisi pencocokan.

Parameter

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

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis pencocokan 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: cocok polos')
}
if req_uri('re:/path[0-9]/path[0-9]') {
    say('req_uri: cocok regex')
}

Nilai balikan

  • Jika parameter pattern tidak disertakan dalam permintaan, URI permintaan dikembalikan. Tipe data: string.

  • Jika parameter pattern disertakan dalam permintaan dan permintaan sesuai dengan kondisi pencocokan, true dikembalikan. Jika tidak ada kondisi yang sesuai, false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: /path1/path2?mode=ip   
Respons:
req_uri: /path1/path2
req_uri: cocok polos
req_uri: cocok regex

req_uri_basename

Item

Deskripsi

Sintaks

req_uri_basename([pattern])

Deskripsi

  • Jika parameter pattern tidak disertakan dalam permintaan, nama file di URI permintaan dikembalikan.

  • Nama file di URI permintaan dibandingkan dengan kondisi pencocokan jika parameter pattern disertakan dalam permintaan.

Contoh nama file:

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

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

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

Parameter

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

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis pencocokan 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: cocok polos')
}
if req_uri_basename('re:^f.*') {
    say('req_uri_basename: cocok regex')
}

Nilai balikan

  • Jika parameter pattern tidak disertakan dalam permintaan, nama file di URI permintaan dikembalikan. Tipe data: string.

  • Jika parameter pattern disertakan dalam permintaan dan permintaan sesuai dengan kondisi pencocokan, true dikembalikan. Jika tidak ada kondisi yang sesuai, false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: /path1/path2/foo.tar.bz2
Respons:
req_uri_basename: foo 3
req_uri_basename: cocok polos
req_uri_basename: cocok regex

req_uri_ext

Item

Deskripsi

Sintaks

req_uri_ext([pattern])

Deskripsi

  • Jika parameter pattern tidak disertakan dalam permintaan, ekstensi di URI permintaan dikembalikan.

  • Jika parameter pattern disertakan dalam permintaan, ekstensi di URI permintaan dibandingkan dengan kondisi pencocokan.

Contoh ekstensi:

  • Untuk /document_detail/30360.html, ekstensinya adalah .html.

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

  • Untuk /tarball/foo.tar.bz2, ekstensinya adalah .tar.bz2.

Parameter

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

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis pencocokan 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: cocok polos')
}
if req_uri_ext('re:\.tar\.bz[0-2]') {
    say('req_uri_ext: cocok regex')
}

Nilai balikan

  • Jika parameter pattern tidak disertakan dalam permintaan, ekstensi di URI permintaan dikembalikan. Tipe data: string.

  • Jika parameter pattern disertakan dalam permintaan dan permintaan sesuai dengan kondisi pencocokan, true dikembalikan. Jika tidak ada kondisi yang sesuai, 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: cocok polos
req_uri_ext: cocok regex

req_uri_seg

Item

Deskripsi

Sintaks

req_uri_seg([idx])

Deskripsi

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

    • Jika parameter idx tidak disertakan dalam permintaan, semua segmen dikembalikan.

    • Jika parameter idx disertakan dalam permintaan, segmen yang mengikuti indeks tertentu, termasuk indeks, dikembalikan.

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

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

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))
}
# ambil semua segmen
segs = req_uri_seg()
foreach(segs, echo_each, ['msg'='req_uri_seg()'])
# ambil 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 balikan

Tipe data: kamus. Paragraf terkait disertakan.

Catatan

Ketika fungsi mengambil paragraf dari kamus yang dikembalikan berdasarkan indeks tertentu, fungsi memeriksa apakah paragraf 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(4): segs[4]=path4

req_uri_arg

Item

Deskripsi

Sintaks

req_uri_arg(name, [pattern])

Deskripsi

Fungsi ini memeriksa nilai parameter yang ditentukan. Jika parameter pattern disertakan dalam permintaan, nilai parameter yang ditentukan dibandingkan dengan kondisi pencocokan. Tabel berikut menjelaskan detail fungsi ini.

Parameter

  • name: nama parameter.

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

    • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis pencocokan 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. mode polos')
} else {
    say('check uid gagal. mode polos')
}
uid_chk = req_uri_arg('uid', 're:[0-9]+')
if uid_chk {
    say('check uid ok. mode regex')
} else {
    say('check uid gagal. mode regex')
}

Nilai balikan

  • Jika parameter pattern tidak disertakan dalam permintaan, nilai yang dikembalikan bervariasi dalam skenario berikut:

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

    • Parameter yang ditentukan tidak ada: mengembalikan nilai false.

  • Jika parameter pattern disertakan dalam permintaan, nilai yang dikembalikan bervariasi dalam skenario berikut:

    • Parameter yang ditentukan ada: mengembalikan true jika nilai sesuai dengan kondisi pencocokan. Jika tidak, false dikembalikan.

    • Parameter yang ditentukan tidak ada: mengembalikan false.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: /path1/path2/path3/path4?mode=req4&uid
Respons:
tidak ditemukan uid
check uid gagal. mode polos
check uid gagal. mode regex

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

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

req_uri_query_string

Item

Deskripsi

Sintaks

req_uri_query_string([pattern])

Deskripsi

  • Jika parameter pattern tidak disertakan dalam permintaan, parameter dalam permintaan dikembalikan tanpa tanda tanya (?).

  • Jika parameter pattern disertakan dalam permintaan, parameter dalam permintaan dibandingkan dengan kondisi pencocokan.

Parameter

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

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis pencocokan 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. mode polos')
} else {
    say('check uri query string gagal. mode polos')
}
if req_uri_query_string('re:mode=[0-9a-z]+') {
    say('check uri query string ok. mode regex')
} else {
    say('check uri query string gagal. mode regex')
}

Nilai balikan

  • Jika parameter pattern tidak disertakan dalam permintaan, parameter dalam permintaan dikembalikan. Tipe data: string.

  • Jika parameter pattern disertakan dalam permintaan dan permintaan sesuai dengan kondisi pencocokan, true dikembalikan. Jika tidak ada kondisi yang sesuai, 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 gagal. mode polos
check uri query string ok. mode regex

req_scheme

Item

Deskripsi

Sintaks

req_scheme([pattern])

Deskripsi

  • Jika parameter pattern tidak disertakan dalam permintaan, skema permintaan dikembalikan.

  • Skema permintaan dibandingkan dengan kondisi pencocokan jika parameter pattern disertakan dalam permintaan.

Parameter

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

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis pencocokan 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. mode polos')
} else {
    say('check scheme gagal. mode polos')
}
if req_scheme('re:https?') {
    say('check scheme ok. mode regex')
} else {
    say('check scheme gagal. mode regex')
}

Nilai balikan

  • Jika parameter pattern tidak disertakan dalam permintaan, skema permintaan dikembalikan. Tipe data: string.

  • Jika parameter pattern disertakan dalam permintaan dan permintaan sesuai dengan kondisi pencocokan, true dikembalikan. Jika tidak ada kondisi yang sesuai, false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: http://xx..
req_scheme: http
check scheme gagal. mode polos
check scheme ok. mode regex

req_method

Item

Deskripsi

Sintaks

req_method([pattern])

Deskripsi

  • Jika parameter pattern tidak disertakan dalam permintaan, metode permintaan dikembalikan.

  • Metode permintaan dibandingkan dengan kondisi pencocokan jika parameter pattern disertakan dalam permintaan.

Parameter

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

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis pencocokan 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. mode polos')
} else {
    say('check method gagal. mode polos')
}
if req_method('re:(GET|POST)') {
    say('check method ok. mode regex')
} else {
    say('check method gagal. mode regex')
}

Nilai balikan

  • Jika parameter pattern tidak disertakan dalam permintaan, metode permintaan dikembalikan. Tipe data: string.

  • Jika parameter pattern disertakan dalam permintaan dan permintaan sesuai dengan kondisi pencocokan, true dikembalikan. Jika tidak ada kondisi yang sesuai, false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan: POST /xxxx/xxx
Respons:
req_method: POST
check method gagal. mode polos
check method ok. mode regex

req_host

Item

Deskripsi

Sintaks

req_host([pattern])

Deskripsi

  • Jika parameter pattern tidak disertakan dalam permintaan, nilai header permintaan Host dikembalikan.

  • Jika parameter pattern disertakan dalam permintaan, nilai header permintaan Host dibandingkan dengan kondisi pencocokan.

Parameter

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

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis pencocokan 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. mode polos')
} else {
    say('check host gagal. mode polos')
}
if req_host('re:.+\.y\.z\.com') {
    say('check host ok. mode regex')
} else {
    say('check host gagal. mode regex')
}

Nilai balikan

  • Jika parameter pattern tidak disertakan dalam permintaan, nilai header permintaan Host dikembalikan. Tipe data: string.

  • Jika parameter pattern disertakan dalam permintaan dan permintaan sesuai dengan kondisi pencocokan, true dikembalikan. Jika tidak ada kondisi yang sesuai, false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

Permintaan:
Host: image.developer.aliyundoc.com
Respons:
req_host: image.developer.aliyundoc.com
check host ok. mode polos
check host gagal. mode regex

req_user_agent

Item

Deskripsi

Sintaks

req_user_agent([pattern])

Deskripsi

  • Jika parameter pattern tidak disertakan dalam permintaan, nilai header permintaan User-Agent dikembalikan.

  • Nilai header permintaan User-Agent dibandingkan dengan kondisi pencocokan jika parameter pattern disertakan dalam permintaan.

Parameter

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

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis pencocokan 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. mode polos')
} else {
    say('check user_agent gagal. mode polos')
}
if req_user_agent('re:^Mozilla') {
    say('check user_agent ok. mode regex')
} else {
    say('check user_agent gagal. mode regex')
}

Nilai balikan

  • Jika parameter pattern tidak disertakan dalam permintaan, nilai header permintaan User-Agent dikembalikan. Tipe data: string.

  • Jika parameter pattern disertakan dalam permintaan dan permintaan sesuai dengan kondisi pencocokan, true dikembalikan. Jika tidak ada kondisi yang sesuai, 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 gagal. mode polos
check user_agent ok. mode regex

req_referer

Item

Deskripsi

Sintaks

req_referer([pattern])

Deskripsi

  • Jika parameter pattern tidak disertakan dalam permintaan, nilai header permintaan Referer dikembalikan.

  • Nilai header permintaan Referer dibandingkan dengan kondisi pencocokan jika parameter pattern disertakan dalam permintaan.

Parameter

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

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis pencocokan 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. mode polos')
} else {
    say('check referer gagal. mode polos')
}
if req_referer('re:https://foo\.bar\.cn/\*+[0-9]+') {
    say('check referer ok. mode regex')
} else {
    say('check referer gagal. mode regex')
}

Nilai balikan

  • Jika parameter pattern tidak disertakan dalam permintaan, nilai header permintaan Referer dikembalikan. Tipe data: string.

  • Jika parameter pattern disertakan dalam permintaan dan permintaan sesuai dengan kondisi pencocokan, true dikembalikan. Jika tidak ada kondisi yang sesuai, 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. mode polos
check referer gagal. mode regex

req_cookie

Item

Deskripsi

Sintaks

req_cookie(name, [pattern])

Deskripsi

Fungsi ini memeriksa nilai cookie yang ditentukan. Jika parameter pattern disertakan dalam permintaan, nilai cookie yang ditentukan dibandingkan dengan kondisi pencocokan. Tabel berikut menjelaskan detail fungsi ini.

Parameter

  • name: menentukan nama cookie.

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

    • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis pencocokan 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. mode polos')
} else {
    say('check cookie uid gagal. mode polos')
}
uid_chk = req_cookie('uid', 're:^[0-9]+')
if uid_chk {
    say('check cookie uid ok. mode regex')
} else {
    say('check cookie uid gagal. mode regex')
}

Nilai balikan

  • Jika parameter pattern tidak disertakan dalam permintaan, nilai yang dikembalikan bervariasi dalam skenario berikut:

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

    • Parameter yang ditentukan tidak ada: mengembalikan false.

  • Jika parameter pattern disertakan dalam permintaan, nilai yang dikembalikan bervariasi dalam skenario berikut:

    • Parameter yang ditentukan ada: mengembalikan true jika nilai sesuai dengan kondisi pencocokan. Jika tidak, false dikembalikan.

    • Parameter yang ditentukan tidak ada: mengembalikan false.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

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

req_first_x_forwarded

Item

Deskripsi

Sintaks

req_first_x_forwarded([pattern])

Deskripsi

  • Jika parameter pattern tidak disertakan dalam permintaan, alamat pertama di header permintaan X-Forwarded-For dikembalikan.

  • Jika parameter pattern disertakan dalam permintaan, alamat pertama di header permintaan X-Forwarded-For dibandingkan dengan kondisi pencocokan.

Parameter

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

  • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis pencocokan 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. mode polos')
} else {
    say('check first_x_forwarded gagal. mode polos')
}
if req_first_x_forwarded('re:1.1.1.[0-9]') {
    say('check first_x_forwarded ok. mode regex')
} else {
    say('check first_x_forwarded gagal. mode regex')
}

Nilai balikan

  • Jika parameter pattern tidak disertakan dalam permintaan, alamat pertama di header permintaan X-Forwarded-For dikembalikan. Tipe data: string.

  • Jika parameter pattern disertakan dalam permintaan dan permintaan sesuai dengan kondisi pencocokan, true dikembalikan. Jika tidak ada kondisi yang sesuai, false dikembalikan.

Dalam contoh ini, nilai-nilai berikut dikembalikan:

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

req_header

Item

Deskripsi

Sintaks

req_header(name, [pattern])

Deskripsi

Fungsi ini memeriksa nilai header permintaan yang ditentukan. Jika parameter pattern disertakan dalam permintaan, nilai header permintaan yang ditentukan dibandingkan dengan kondisi pencocokan.

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 pencocokan. Jenis pencocokan berikut didukung:

    • Algoritma brute-force: membandingkan nilai berdasarkan algoritma brute-force. Ini adalah jenis pencocokan 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. mode polos')
} else {
    say('check header x-uid gagal. mode polos')
}
uid_chk = req_header('x_uid', 're:es [a-z]+')
if uid_chk {
    say('check header x-uid ok. mode regex')
} else {
    say('check header x-uid gagal. mode regex')
}

Nilai balikan

  • Jika parameter pattern tidak disertakan dalam permintaan, nilai yang dikembalikan bervariasi dalam skenario berikut:

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

    • Parameter yang ditentukan tidak ada: mengembalikan nilai false.

  • Jika parameter pattern disertakan dalam permintaan, nilai yang dikembalikan bervariasi dalam skenario berikut:

    • Parameter yang ditentukan ada: mengembalikan true jika nilai sesuai dengan kondisi pencocokan. Jika tidak, false dikembalikan.

    • Parameter yang ditentukan tidak ada: mengembalikan 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. mode polos
check header x-uid ok. mode regex