All Products
Search
Document Center

Function Compute:Ikhtisar Pemicu HTTP

Last Updated:Mar 16, 2026

Picu fungsi menggunakan permintaan HTTP. Pendekatan ini ideal untuk membangun layanan web dan aplikasi serupa secara cepat. Sebelum memulai, tinjau hal-hal berikut: batas penggunaan untuk pemicu HTTP dan HTTPS; metode pemanggilan sinkron dan asinkron; serta cara mengonfigurasi autentikasi, otorisasi, dan berbagi sumber daya lintas asal (CORS). Topik ini mencakup hal-hal tersebut dan menjawab pertanyaan umum.

Catatan Penting

  • Risiko keamanan dari pemicu anonim: Jika Anda mengatur Authentication Method ke No Authentication saat mengonfigurasi pemicu HTTP, tidak ada verifikasi identitas yang dilakukan. Siapa pun dapat memanggil fungsi Anda melalui permintaan HTTP, yang meningkatkan risiko eksposur URL. Untuk menerapkan otorisasi kustom, validasi header permintaan Authorization dalam kode aplikasi Anda. Untuk detailnya, lihat Configure signature-based authentication for HTTP triggers.

  • Pembatasan unduhan APK: Sesuai dengan peraturan keamanan siber nasional, mulai 10 Juni 2024, pemicu HTTP yang baru dibuat melarang pengunduhan file APK (tipe MIME application/vnd.android.package-archive) melalui titik akhir jaringan publik. Permintaan akan mengembalikan kode status HTTP 400. Untuk detailnya, lihat How to ensure your HTTP trigger's public endpoint returns .apk files correctly.

  • Rotasi VIP: Function Compute melakukan rotasi alamat IP virtual (VIP) untuk meningkatkan ketahanan sistem dan stabilitas layanan. VIP yang terkait dengan titik akhir publik atau pribadi pemicu HTTP Anda berubah secara berkala. Menyematkan VIP secara statis dapat menyebabkan gangguan layanan. Gunakan nama domain kustom untuk menjaga kelancaran operasi bisnis. Kegagalan yang disebabkan oleh penggunaan VIP yang tidak tepat tidak dicakup dalam perjanjian tingkat layanan Function Compute.

    Gunakan nama domain kustom dengan konfigurasi CNAME. Untuk detailnya, lihat Configure a custom domain name.

Batasan

Batasan pemicu

  • Anda dapat membuat paling banyak satu pemicu HTTP per versi atau alias. Untuk informasi lebih lanjut, lihat Version management dan Alias management.

  • Nama domain bawaan hanya untuk pengujian. Jangan menggunakannya untuk layanan produksi karena stabilitasnya tidak dijamin.

    Catatan

    Untuk menghosting layanan bergaya website secara publik, gunakan nama domain kustom yang telah terdaftar ICP. Bind nama domain tersebut ke fungsi Anda sebelum mengeksposnya. Untuk informasi lebih lanjut, lihat Configure a custom domain name.

Batasan protokol HTTP/HTTPS

Catatan

Function Compute mendukung pemicuan fungsi menggunakan permintaan GET, POST, PUT, DELETE, HEAD, PATCH, dan OPTIONS. Metode ini cocok untuk skenario permintaan-respons sederhana. Untuk informasi lebih lanjut, lihat Configure an HTTP trigger.

  • Batasan permintaan HTTP

    • Header permintaan kustom yang diawali dengan x-fc- tidak didukung. Header kustom berikut juga tidak didukung:

      • connection

      • keep-alive

    • Jika permintaan melebihi salah satu batasan berikut, Function Compute mengembalikan kode status HTTP 400 dan kode kesalahan InvalidArgument.

      • Ukuran header: Ukuran gabungan semua kunci dan nilai header tidak boleh melebihi 8 KB.

      • Ukuran path: Ukuran total path, termasuk semua parameter kueri, tidak boleh melebihi 4 KB.

      • Ukuran badan: Untuk pemanggilan sinkron, badan permintaan tidak boleh melebihi 32 MB. Untuk pemanggilan asinkron, lihat Function execution resource limits.

  • Batasan respons HTTP

    • Header respons kustom yang diawali dengan x-fc- tidak didukung. Header kustom berikut juga tidak didukung:

      • connection

      • content-length

      • date

      • keep-alive

      • server

      • upgrade

      • content-disposition:attachment

        Catatan

        Untuk alasan keamanan, Function Compute menambahkan content-disposition: attachment ke header respons saat Anda menggunakan nama domain Function Compute bawaan (aliyuncs.com). Hal ini menyebabkan browser mengunduh respons sebagai lampiran. Untuk menghapus perilaku ini, konfigurasikan nama domain kustom. Untuk informasi lebih lanjut, lihat Configure a custom domain name.

    • Jika respons melebihi batasan berikut, Function Compute mengembalikan kode status HTTP 502 dan kode kesalahan BadResponse.

      • Ukuran header: Ukuran gabungan semua kunci dan nilai header tidak boleh melebihi 8 KB.

Perbandingan dengan API Gateway

Baik pemicu HTTP maupun pemicu API Gateway mendukung pembuatan aplikasi web. Gunakan keduanya sebagai berikut:

Dibandingkan dengan pemicu API Gateway, pemicu HTTP menawarkan keunggulan berikut:

  • Mengurangi waktu belajar developer dan menyederhanakan debugging. Membantu developer membangun aplikasi web dan API dengan Function Compute lebih cepat.

  • Mengurangi langkah pemrosesan permintaan. Pemicu HTTP mendukung format permintaan dan respons yang efisien tanpa enkode atau dekode JSON, memberikan kinerja lebih baik.

  • Mendukung alat pengujian HTTP yang sudah dikenal untuk memverifikasi fungsionalitas dan kinerja Function Compute.

  • Mudah diintegrasikan dengan layanan lain yang mendukung webhook seperti CDN origin fetch dan Simple Message Queue (formerly MNS).

Metode Pemanggilan

Pemanggilan sinkron

Pada pemanggilan sinkron, fungsi memproses event dan segera mengembalikan hasilnya. Pemicu HTTP menggunakan pemanggilan sinkron secara default. Untuk informasi lebih lanjut, lihat Synchronous invocation.

Pemanggilan asinkron

Pada pemanggilan asinkron, Function Compute menyimpan permintaan dan segera mengembalikan respons, tanpa menunggu fungsi selesai dieksekusi.

  • Asynchronous invocation: Tambahkan header permintaan "X-Fc-Invocation-Type":"Async" untuk mengaktifkan pemanggilan asinkron tingkat permintaan.

  • Asynchronous task: Setelah mengonfigurasi tugas asinkron untuk fungsi HTTP Anda, tambahkan header permintaan "X-Fc-Async-Task-Id":"g6u*****iyvhd3jk8s6bhj0hh" untuk menentukan ID pemanggilan.

Untuk informasi lebih lanjut tentang header permintaan, lihat Invoke a function.

Setelah pemanggilan asinkron berhasil, Function Compute mengembalikan kode status HTTP 202, yang menunjukkan permintaan diterima. Respons tersebut juga mengembalikan ID permintaan dalam header respons, contohnya: "X-Fc-Request-Id": "80bf7****281713e1".

Catatan

Jika Function Compute mengembalikan kode status selain 202, pemanggilan gagal. Untuk mengetahui penyebab kegagalan, lihat Retry mechanism.

Dokumentasi terkait:

Autentikasi dan Otorisasi

Function Compute mendukung autentikasi dan otorisasi untuk pemicu HTTP. Pengguna eksternal harus lulus pemeriksaan autentikasi dan otorisasi Function Compute sebelum mengakses fungsi Anda melalui pemicu HTTP. Metode autentikasi yang didukung meliputi:

Penanganan Permintaan CORS

Secara default, Function Compute mengizinkan permintaan lintas asal ke fungsi Anda. Anda juga dapat menyesuaikan cara fungsi Anda menangani permintaan lintas asal (CORS) dalam kode fungsi Anda.

Permintaan simple

Permintaan simple tidak mengirim permintaan preflight, sehingga Anda dapat langsung mengatur header yang diawali dengan Access-Control-Allow-* dalam kode fungsi Anda untuk menerapkan kontrol akses sederhana. Untuk permintaan simple, Function Compute mendukung header kustom berikut: Access-Control-Allow-Origin, Access-Control-Allow-Headers, , dan Access-Control-Max-Age.

Jika Anda tidak mengatur header kustom, Function Compute mengatur header respons berikut secara default, berdasarkan header permintaan yang sesuai:

  • Access-Control-Allow-Origin: Header Origin dari permintaan.

  • Access-Control-Allow-Credentials: Nilai default adalah true.

  • Access-Control-Expose-Headers: Header yang didefinisikan oleh Function Compute.

Permintaan tidak sederhana

Permintaan tidak sederhana mengirim permintaan preflight sebelum permintaan aktual. Permintaan tidak sederhana mencakup satu pemanggilan metode OPTIONS dan satu pemanggilan fungsi aktual. Aturan untuk permintaan aktual sama dengan aturan untuk permintaan simple. Untuk menyesuaikan respons preflight, tambahkan metode OPTIONS ke pemicu HTTP Anda dan tangani permintaan OPTIONS dalam kode fungsi Anda. Atur header respons yang diawali dengan Access-Control-Allow- untuk mengontrol perilaku lintas asal.

Untuk permintaan preflight, Function Compute mendukung header yang dapat dikustomisasi berikut: Access-Control-Allow-Origin, Access-Control-Allow-Headers, Access-Control-Allow-Methods, dan Access-Control-Max-Age.

Sebagai contoh, berikut cara menangani permintaan preflight dalam kode runtime Node.js:

exports.handler =  (event, context,callback) => {
      console.log('hello world');
      const method = JSON.parse(event).requestContext.http.method;
      if (method === 'OPTIONS') {
          // Set response headers to handle preflight requests
          const fcResponse = {
            'statusCode': 204,
            'headers': {
              'Access-Control-Allow-Origin': 'http://www.fc.com',
              'Access-Control-Allow-Methods': 'POST',
              'Access-Control-Allow-Headers': 'Content-Type, Authorization',
              'Access-Control-Max-Age':'3600'
            },
            'body': 'hello world'
        };
        callback(null, fcResponse);
      } else {
        callback(null, {
            'statusCode': 500,
            'body': 'hello world'
        });
      }
    };

API Configured CORS

API Configured CORS saat ini tersedia sebagai pratinjau undangan. Untuk mengaktifkannya, hubungi kami dan berikan ID akun Alibaba Cloud (UID) Anda.

Deskripsi fitur

API Configured CORS adalah kemampuan tingkat gerbang yang disediakan oleh Function Compute (FC). Konfigurasikan kebijakan CORS langsung pada pemicu HTTP atau nama domain kustom tanpa menulis logika CORS dalam kode fungsi Anda.

Manfaat utama
  • Kode lebih sederhana: Pisahkan logika CORS dari logika bisnis. Fokus hanya pada implementasi logika bisnis inti Anda.

  • Biaya lebih rendah: Gerbang merespons langsung permintaan preflight OPTIONS. Tidak ada instans fungsi yang dipicu, sehingga menghemat biaya durasi.

  • Manajemen terpusat: Konfigurasikan kebijakan di tingkat pemicu atau domain untuk mempermudah administrasi multi-layanan.

  • Respons lebih cepat: Gerbang langsung mengembalikan hasil preflight, mengurangi latensi.

Cakupan penerapan

  • Versi API: Hanya tersedia untuk fungsi FC 3.0 (versi API: 2023-03-30).

  • Metode akses: Pemicu HTTP (termasuk domain uji bawaan) atau nama domain kustom yang telah diikat.

Konfigurasi

Konfigurasikan menggunakan API Update trigger atau Update custom domain name.

Parameter konfigurasi CORS

Nama Parameter

Tipe

Deskripsi

Nilai Default

Batas atau Kendala

allowOrigins

Array

Daftar origin yang diizinkan mengakses sumber daya.

-

Maksimal 100 item. Setiap item tidak boleh melebihi 256 karakter. Mendukung * atau https://*.

allowMethods

Array

Daftar metode HTTP yang diizinkan.

Metode pemicu

Jangan mengonfigurasi OPTIONS secara manual. Gerbang menanganinya secara otomatis.

allowHeaders

Array

Header permintaan kustom yang diizinkan dari browser.

-

Maksimal 50 item. Mendukung *.

exposeHeaders

Array

Bidang header respons yang diizinkan untuk diakses browser.

Sistem default

Maksimal 50 item.

allowCredentials

Boolean

Apakah kredensial (seperti cookie) diizinkan dalam permintaan lintas asal.

false

Jika diatur ke true, allowOrigins tidak boleh diatur ke *.

maxAge

Integer

Durasi cache (dalam detik) untuk respons preflight (OPTIONS).

3600

Rentang valid: 0 hingga 86400.

Nilai untuk allowOrigins:

  • Wildcard *: Mengizinkan semua origin (hanya jika allowCredentials bernilai false).

  • Wildcard https://*: Mengizinkan semua origin yang diawali dengan https://.

  • Domain spesifik: Misalnya, https://example.com.

  • Beberapa domain: Sebagai array, misalnya, ["https://example.com", "https://app.example.com"].

  • Wildcard subdomain (misalnya, https://*.example.com) tidak didukung.

Nilai untuk allowMethods:

  • Metode HTTP standar: GET, POST, PUT, DELETE, PATCH, HEAD.

  • Wildcard *: Mengizinkan semua metode HTTP.

  • Tidak didukung OPTIONS: Metode OPTIONS ditangani secara otomatis oleh sistem untuk permintaan preflight.

Logika penanganan permintaan

Setelah mengaktifkan API Configured CORS, gerbang memproses permintaan berdasarkan jenisnya:

1. Permintaan preflight (OPTIONS)

Saat browser mengirim permintaan preflight untuk permintaan tidak sederhana, gerbang memvalidasi header Origin, Access-Control-Request-Method, dan Access-Control-Request-Headers:

  • Validasi lolos: Mengembalikan kode status HTTP 204 No Content dan menyisipkan header respons CORS yang dikonfigurasi. Tidak memicu fungsi.

  • Validasi gagal:

    • Origin cocok tetapi header lain tidak: Gerbang mengatur header CORS dasar.

    • Origin tidak cocok: Header CORS tidak diatur.

    • Permintaan diteruskan ke instans fungsi.

2. Permintaan simple (GET, POST, HEAD, dll.)

Gerbang hanya memvalidasi header Origin:

  • Validasi lolos: Menyisipkan Access-Control-Allow-Origin dan header CORS lainnya ke dalam respons. Meneruskan permintaan ke fungsi untuk dieksekusi.

  • Validasi gagal: Tidak menyisipkan header CORS. Tetap meneruskan permintaan ke fungsi untuk dieksekusi.

Kompatibilitas dan prioritas

Beberapa metode penanganan CORS dapat berlaku untuk path yang sama. Urutan prioritas (tertinggi ke terendah):

  1. API Configured CORS: Jika diaktifkan, gerbang menerapkan logika ini terlebih dahulu.

  2. Default CORS: Jika API Configured CORS dinonaktifkan, gerbang menggunakan echo lintas asal bawaan.

  3. CORS yang didefinisikan fungsi: Header yang dikembalikan oleh fungsi Anda digabungkan (ditambahkan) dengan hasil di atas untuk memastikan kompatibilitas.

Perbandingan pendekatan

Fitur

API Configured CORS (direkomendasikan)

Default CORS

CORS yang didefinisikan pengguna (kode)

Apakah permintaan preflight dikenai biaya?

Tidak dikenai biaya (diblokir gerbang)

Berpotensi dikenai biaya

Dikenai biaya (fungsi dipicu)

Intrusi kode

Tidak ada

Tidak ada

Tinggi

Versi API yang didukung

Hanya FC 3.0

Semua versi

Semua versi

Kompleksitas konfigurasi

Rendah (konfigurasi sekali saja)

Tidak perlu konfigurasi

Tinggi (harus menangani metode OPTIONS)

FAQ

Q1: Mengapa panggilan API saya gagal setelah saya mengonfigurasi allowMethods untuk menyertakan OPTIONS?

A: Secara desain, metode OPTIONS dikelola secara otomatis oleh gerbang Function Compute. Jangan menambahkan OPTIONS secara manual ke daftar corsConfig allowMethods. Sistem menangani semua permintaan preflight secara otomatis.

Q2: Setelah konfigurasi berhasil, mengapa permintaan OPTIONS saya tetap mengembalikan 200 bukan 204?

A: Pastikan apakah akun Anda telah diberikan izin “pratinjau undangan” oleh tim jaga. Jika plug-in intersepsi belum sepenuhnya diaktifkan, gerbang kembali ke logika “default CORS” (mengembalikan 200 dan meneruskan ke fungsi).

Q3: Apakah allowOrigins dapat menggunakan wildcard subdomain (misalnya, *.example.com)?

A: Pencocokan kabur subdomain tidak didukung. Cantumkan semua domain tingkat kedua yang diperlukan secara eksplisit dalam array allowOrigins, atau gunakan https://* untuk pencocokan luas.

Q4: Jika kode fungsi saya juga menulis header CORS, apakah akan terjadi konflik?

A: Tidak terjadi konflik. Header yang dihasilkan oleh gerbang digabungkan dengan header yang dikembalikan oleh fungsi Anda. Jika terdapat duplikat, browser biasanya menggunakan nilai pertama atau nilai yang sesuai standar. Hal ini memastikan aplikasi yang ada tetap berjalan tanpa gangguan selama migrasi lancar.

FAQ

Di mana saya dapat mengonfigurasi port listening?

Konfigurasikan port listening hanya saat Anda membuat fungsi sebagai Web Function.

Fungsi saya membutuhkan waktu terlalu lama untuk dieksekusi. Bagaimana cara memperbaikinya?

Fungsi saya mengembalikan kode status HTTP 499. Bagaimana cara menangani pembatalan permintaan yang diinisiasi klien?

  • Setelah error 499, instans fungsi dimulai ulang. Konfigurasikan pemeriksaan kesehatan untuk mencegah restart. Untuk detailnya, lihat Why does the function instance restart after a client 499 error?.

  • Jika panggilan klien timeout, pindahkan logika yang memakan waktu ke fungsi baru dan panggil secara asinkron. Atau gunakan pemanggilan asinkron dari sisi klien.

Fungsi saya sedang berjalan. Bagaimana cara memperbarui konfigurasinya?

  • Pembaruan konfigurasi berlaku setelah eksekusi fungsi saat ini selesai. Permintaan yang sedang berlangsung tetap menggunakan konfigurasi lama hingga selesai. Permintaan baru menggunakan konfigurasi yang diperbarui.

  • Hapus fungsi saat ini dan buat fungsi baru dengan konfigurasi yang diperbarui.