Bagikan melalui


Memodifikasi Header Respons HTTP

oleh Ruslan Yakushev

Bagian dokumentasi ini berlaku untuk Modul Penulisan Ulang URL Versi 2.0 untuk IIS 7.

Panduan ini memandu Anda melalui cara menggunakan Modul Penulisan Ulang URL v 2.0 untuk mengatur header respons HTTP.

Prasyarat

Panduan ini memerlukan prasyarat berikut:

  1. IIS 7 atau lebih tinggi dengan layanan peran ASP.NET diaktifkan;
  2. Url Rewrite Modul 2.0 Release Candidate diinstal;
  3. Panduan selesai pada Proksi Terbalik dengan Penulisan Ulang URL v2 dan Perutean Permintaan Aplikasi.

Pengantar

Modul Penulisan Ulang URL 2.0 menyediakan dukungan untuk penulisan ulang berbasis aturan dari header HTTP respons. Skenario penggunaan yang sangat umum untuk mengatur header respons adalah memodifikasi respons pengalihan yang dihasilkan oleh aplikasi di belakang load balancer atau proksi terbalik. Misalnya, ketika aplikasi di belakang proksi terbalik mengembalikan respons pengalihan, header Lokasi HTTP dalam respons mungkin tidak mewakili alamat yang menghadap internet, melainkan alamat aplikasi internal. Modul Penulisan Ulang URL 2.0 dapat digunakan pada server proksi terbalik untuk mengubah header Lokasi dalam respons. Skenario diwakili pada diagram berikut:

Diagram yang menunjukkan proses respons pengalihan di antara klien, server proksi terbalik, dan server klien internal.

  1. Klien HTTP membuat permintaan ke halaman http://www.contoso.com/webmail/oldpage.aspxweb .
  2. Server proksi terbalik menggunakan PENULISAN Ulang URL 2.0 dan Perutean Permintaan Aplikasi untuk meneruskan permintaan ke server konten internal berdasarkan nama folder di jalur URL yang diminta. Misalnya, http://webmail/oldpage.aspx;
  3. Aplikasi web yang berjalan di server konten mengeluarkan respons pengalihan (HTTP/1.1 301) yang mengarahkan klien HTTP ke http://webmail/newpage.aspx;
  4. Server proksi terbalik menggunakan REWrite URL 2.0 untuk menggantikan lokasi pengalihan berbasis internal sebagai respons dengan lokasi pengalihan berbasis internet: http://www.contoso.com/webmail/newpage.aspx.

Menyiapkan skenario penelusuran

Untuk menyiapkan skenario penelusuran, selesaikan panduan tentang Proksi Terbalik dengan Penulisan Ulang URL v2 dan Perutean Permintaan Aplikasi. Di akhir panduan itu, Anda harus memiliki situs web proksi terbalik yang merutekan permintaan ke dua aplikasi konten: webmail dan penggajian.

Untuk panduan ini, Anda harus menambahkan logika pengalihan ke aplikasi webmail. Dalam skenario kehidupan nyata, itu mungkin akan menjadi pengalihan yang dimulai oleh kode aplikasi web tetapi, untuk kesederhanaan, dalam panduan ini Anda akan menggunakan aturan pengalihan dalam Modul Penulisan Ulang URL.

  1. Buat file bernama web.config di folder berikut:

    %SystemDrive%\inetpub\webmail
    
  2. Buka file di editor teks, tempelkan kode XML berikut di dalam lalu simpan file:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <system.webServer>
      <rewrite>
        <rules>
         <rule name="Redirect" stopProcessing="true">
         <match url="^index\.aspx$" />
         <action type="Redirect" url="default.aspx" />
        </rule>
       </rules>
      </rewrite>
    </system.webServer>
    </configuration>
    

    Ini adalah aturan yang akan mengalihkan semua permintaan index.aspx ke default.aspx.

Sekarang buka browser web dan buat permintaan http://localhost/webmail/index.aspx. Perhatikan bahwa browser dialihkan ke http://localhost:8081/default.aspx, yang pada dasarnya adalah URL internal yang digunakan oleh aplikasi webmail web. Sekarang Anda akan mengonfigurasi aturan Penulisan Ulang URL untuk mengubah header Lokasi HTTP di respons pengalihan HTTP sehingga browser dialihkan ke URL yang tepat: http://localhost/webmail/default.aspx.

Memodifikasi aturan masuk untuk mempertahankan header host

Agar dapat memodifikasi header Lokasi HTTP, perlu untuk mempertahankan nilai asli header host HTTP. Aturan penulisan ulang keluar menggunakan nilai yang dipertahankan saat memodifikasi respons. Untuk mempertahankan nilai asli, simpan dalam variabel server sementara ORIGINAL_HOST.

  1. Di halaman tampilan fitur Penulisan Ulang URL utama, pilih Tampilkan Variabel Server di panel Tindakan di sisi kanan:
    Cuplikan layar Lihat Variabel Server di bawah Kelola Variabel Server di panel Tindakan.
  2. Di halaman Variabel Server yang Diizinkan , pilih Tambahkan lalu masukkan nama variabel server yang akan digunakan untuk menyimpan sementara nilai header Host HTTP. Misalnya, ORIGINAL_HOST:
    Cuplikan layar nama variabel Server diatur ke HOST garis bawah ASLI.
  3. Pilih OK untuk menyimpan perubahan lalu kembali ke halaman tampilan fitur Penulisan Ulang URL utama. Setelah itu, pilih aturan masuk "Proksi Balik ke webmail" dan pilih Edit.
  4. Di halaman Edit Aturan Masuk , perluas kotak grup "Variabel Server"; lalu pilih Tambahkan dan masukkan "ORIGINAL_HOST" untuk nama variabel server dan "{HTTP_HOST}" untuk "Nilai":
    Cuplikan layar halaman Edit Aturan Masuk dengan Atur Nilai Variabel Server diatur ke kurung kurawal H T T P garis bawah kurung kurawal HOST.

Membuat aturan keluar untuk mengubah header respons HTTP

Sekarang Anda akan membuat aturan penulisan ulang keluar yang menulis ulang header Lokasi HTTP dalam respons pengalihan untuk menambahkan kembali folder aplikasi ke jalur URL dan untuk mengganti nama host.

  1. Di halaman tampilan fitur Penulisan Ulang URL utama, pilih "Tambahkan Aturan" lalu pilih "Aturan Kosong" di bawah kategori "Aturan Keluar".
  2. Di halaman "Edit Aturan Keluar", beri nama aturan sebagai "Rewrite Location Header".
  3. Di daftar drop-down "Pra-kondisi", pilih "<Buat Pra-Kondisi> Baru".
  4. Dalam dialog "Tambahkan Pra-Kondisi", beri nama pra-kondisi sebagai "Pengalihan"
  5. Pilih "Tambahkan" lalu masukkan {RESPONSE_STATUS} sebagai input kondisi dan "3\d\d" sebagai pola. Pra-kondisi ini digunakan untuk memeriksa apakah respons memiliki kode status pengalihan, seperti 301, 302, 307, dan sebagainya. Dialog pra-kondisi akan terlihat mirip dengan yang berikut ini:
    Cuplikan layar kurung kurawal RESPONS garis bawah STATUS keriting ditetapkan sebagai input dan 3 garis miring terbalik d garis miring terbalik d ditetapkan sebagai pola.
  6. Pilih OK untuk kembali ke halaman Edit Aturan Keluar .
  7. Dalam kotak Cocokkan grup, gunakan daftar drop-down Cakupan yang cocok untuk memilih Variabel Server.
  8. Masukkan RESPONSE_Location untuk "Nama variabel" dan "^http://[^/]+/(.*)" untuk "Pola". Ini mengonfigurasi aturan untuk beroperasi pada header HTTP respons "Lokasi" dan mencocokkan nilainya dengan pola regex yang menyimpan jalur URL ke dalam referensi kembali.
  9. Perluas kotak grup "Kondisi", pilih "Tambahkan" dan masukkan {ORIGINAL_HOST} sebagai input kondisi dan ".+" sebagai pola kondisi. Kondisi ini memeriksa apakah variabel server sementara ORIGINAL_HOST ada dan memiliki nilai yang tidak kosong.
  10. Pilih Tambahkan sekali lagi dan tambahkan kondisi lain. Atur input kondisi ke {URL} dan pola ke "^/(webmail|payroll)/.*". Ekspresi reguler ini digunakan untuk mencocokkan jalur URL yang dimulai dengan /webmail atau /payroll. Selain itu, tanda kurung dalam pola menangkap bagian dari string URL yang cocok, sehingga dapat digunakan kembali saat membuat URL pengganti.
  11. Terakhir, dalam kotak grup "Tindakan" pilih tindakan "Tulis Ulang" dan masukkan "http://{ORIGINAL_HOST}/{C:1}/{R:1}" sebagai nilai. Tindakan ini menggantikan nilai header Lokasi HTTP dengan string yang dibangun dengan menggunakan nama host dari variabel server, referensi kembali kondisi yang berisi awalan folder jalur URL dan referensi kembali aturan yang berisi jalur URL saat ini di header Lokasi.

Halaman lengkap akan terlihat seperti berikut ini:

Cuplikan layar panel Edit Aturan Keluar dengan HOST ASLI dan U R L ditetapkan sebagai input kondisi.

Menguji aturan

Untuk menguji bahwa aturan berfungsi dengan benar, buka browser web dan buat permintaan ke http://localhost/webmail/index.aspx. Browser harus dialihkan ke http://localhost/webmail/default.aspx:

Cuplikan layar browser web dengan U R L asli yang dialihkan ke U R L baru.

Ringkasan

Dalam panduan ini:

  • Anda telah mempelajari cara menggunakan beberapa fitur baru di REwrite URL 2.0 untuk menerapkan skenario proksi terbalik yang berfungsi penuh.
  • Anda telah mengonfigurasi aturan masuk untuk meneruskan permintaan ke server konten back-end dan untuk mengatur variabel server sementara.
  • Anda kemudian telah menentukan aturan keluar yang memodifikasi header Lokasi HTTP dalam respons pengalihan yang dihasilkan oleh aplikasi web dari server konten back-end.