Paksa HTTPS di Appharbor

Pertanyaan terkait: di sini - di sini

Saya memiliki aplikasi ASP.NET yang diterapkan di appharbor. Menavigasi secara manual ke url https:// berfungsi dengan baik, tetapi saya HANYA ingin menggunakan HTTPS. Artinya, alihkan ke HTTPS jika saya menerima permintaan HTTP.

Ada 2 cara untuk mencapai hal ini, yang saya ketahui: (1) menggunakan web.config , yang tidak berfungsi karena header X-Forwarded-Proto dihapus oleh penyeimbang beban di appharbor (?) atau ( 2) membuat httpattribute khusus seperti yang ditunjukkan di sini

Sayangnya, tidak satu pun dari pendekatan ini yang berfungsi dengan baik untuk saya - Keduanya memberi saya pengalihan :(. Semua jawaban yang saya temukan sudah cukup lama, apakah ada perubahan di appharbor/asp.net yang harus saya waspadai?

Terima kasih sebelumnya.


person user1202032    schedule 18.04.2015    source sumber


Jawaban (1)


Apakah Anda menggunakan MVC di aplikasi Anda? Atribut itu dimaksudkan untuk itu.

Jika itu hanya ASP.NET biasa, Anda dapat menggunakan HTTP Modules atau Global.asax untuk mencapai efek yang sama.

RequireHttpsAttribute oleh Rune seharusnya berfungsi. Saya menggunakan ServiceStack di AppHarbor, tetapi berdasarkan atribut yang saya gunakan dari kode Rune. Itu masih digunakan sampai sekarang.

Penyeimbang beban AppHb akan menyetel header X-Forwarded-Proto agar sesuai dengan skema protokol masuk (http atau https), karena lalu lintas dari penyeimbang beban diteruskan ke instans IIS aplikasi Anda sebagai HTTP (sehingga skema aslinya hilang).

person Tyst    schedule 18.04.2015
comment
Saya menggunakan MVC, ya. Saya benar-benar tidak yakin apa yang saya lakukan salah saat itu. Saya menyalin/menempelkan kode Rune, dan mengganti namanya menjadi MyRequireHttpsAttribute Kemudian saya menambahkan [MyRequireHttpsAttribute] di atas semua metode di salah satu pengontrol saya. Sekarang mendapat pesan kesalahan tentang terlalu banyak pengalihan - person user1202032; 18.04.2015
comment
Apakah Anda masih memanggil pengalihan dengan kode Anda sendiri, atau hanya atributnya? Apakah RequireHttpsAttribute pasti terkena selama permintaan Anda? - person Tyst; 19.04.2015
comment
Saya menempatkan atribut di atas kelas pengontrol saya, bukan di atas metode individual. Selain itu, saya memindahkan atribut dari lipatan App_Start ke foldernya sendiri. Tampaknya ini telah menyelesaikan masalah saya, dan sekarang saya selalu terhubung menggunakan https. Namun, saya tidak yakin saya sepenuhnya memahami alasannya. Terima kasih atas bantuan Anda - person user1202032; 19.04.2015