Rumah  >  Artikel  >  applet WeChat  >  Ringkasan masalah kehilangan Perujuk (pembayaran WeChat H5)

Ringkasan masalah kehilangan Perujuk (pembayaran WeChat H5)

藏色散人
藏色散人ke hadapan
2021-08-16 11:29:524716semak imbas

Baru-baru ini, syarikat telah memohon pembayaran H5 WeChat Dokumen pembayaran yang berkaitan boleh didapati di sini https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4. Selepas keluaran, pembayaran telah dimulakan 商家参数格式有误,请联系商家解决 Menurut dokumen WeChat rasmi, mesej ralat sepatutnya referer Jadi saya menemui masalah yang hilang dan mendapati ia memang referer proses penyelesaian.

Apa itu Perujuk

Perujuk HTTP adalah sebahagian daripada HTTP permintaanheader maklumat pengepala apabila penyemak imbas menghantar permintaan ke pelayan web, ia biasanya membawanya Perujuk

memberitahu pelayan halaman mana saya dipautkan, supaya pelayan boleh mendapatkan beberapa maklumat untuk diproses.

Sebagai contoh, dalam Chrome konsol penyemak imbas, kita boleh melihat maklumat yang serupa dengan yang berikut di bawah Request Headers

Provisional headers are shown
Accept: 
/
Origin: local.test5.show
Referer: local.test5.show/test/show
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36

di mana Referer ialah atribut

Yang betul Ejaan Inggeris

Perujuk ialah perujuk. Disebabkan ralat ejaan dalam spesifikasi HTTP awal, adalah satu kesilapan untuk mengekalkan keserasian ke belakang

Peranan Perujuk

Anti-pautan panas

Sebagai contoh, jika anda mendapati anda memuatkan sumber anda sendiri tetapi perujuknya bukan tapak anda sendiri, anda boleh menyekatnya

Cegah permintaan berniat jahat

Ini sama seperti di atas

Penggunaan Lanjutan

Sebagai contoh, pembayaran WeChat H5 juga memerlukan ini, saya tidak tahu untuk apa mereka menggunakannya (hhh

Perujuk hilang

Berkenaan masalah kehilangan Referer, pertama sekali, perujuk dihantar ke pelayan oleh pelayar pelanggan, dan boleh diperolehi oleh pelanggan melalui document.referrer, yang bermaksud bahawa penghantaran perujuk sebenarnya adalah tingkah laku penyemak imbas, sama ada ia dihantar atau tidak Keputusan terletak pada penyemak imbas, tetapi protokol HTTP mempunyai peraturan yang ketat tentang masa penyemak imbas harus menghantarnya dan apabila ia tidak sepatutnya menghantarnya tidak menghantar perujuk

2. Daripada pengguna mengklik pautan dari tapak web HTTPS Apabila pergi ke tapak web HTTP lain, jangan hantar perujuk3.html5, rel a tag = “noreferrer ” boleh menghalang pelayar daripada menghantar perujuk

4 Gunakan Skim URI Data Dipautkan, pelayar tidak akan menghantar perujuk

5. Gunakan Dasar Keselamatan Kandungan, anda juga boleh menghalang pelayar daripada menghantar perujuk

6 Gunakan tag meta dalam pengepala html untuk mengawal tidak membenarkan Penyemak imbas menghantar perujuk

untuk menjana pautan URL HTTPS ke HTTP secara automatik

Kadangkala perlu menjana beberapa pautan URL dalam projek API untuk kembali, tetapi pelayan telah dikonfigurasikan untuk menyokong HTTPS URL yang dijana apabila diakses melalui HTTPS masih HTTP

Mengenai masalah ini, ia. sebenarnya adalah pelayan konfigurasi Masalahnya adalah serupa dengan yang berikut

Kembali ke penjejakan isu pembayaran WeChat yang saya temui Selepas satu pusingan pelayar melompat, saya mendapati bahawa atribut berada di bahagian kedua. kes. Apabila melompat dari tapak HTTPS ke tapak HTTP, Perujuk hilang [ps: sebaliknya, tiada masalah untuk pergi dari HTTP ke HTTPS tanpa kehilangan Perujuk]. Sudah tentu, saya tidak menyedari masalah ini pada mulanya kerana tiada masalah dari permintaan bahagian hadapan kepada API Semua projek telah menggunakan HTTPS di seluruh papan, dan maklumat Perujuk juga dibawa URL permintaan pembayaran WeChat dicapai dalam langkah terakhir .

Kemudian saya mendapati bahawa apabila meminta projek API, projek API mengembalikan URL ke bahagian hadapan URL ini dijana oleh kod bahagian belakang kepada peraturan (fungsi pembantu tindakan dalam Laravel tidak ada yang salah dengan fungsi ini sendiri, tetapi pautan URL yang dijana ialah HTTP, menyebabkan masalah lagi). ! ! Projek API dikonfigurasikan untuk permintaan HTTPS tetapi URL yang dijana ialah HTTP Masalahnya di sini saya meminta bantuan daripada saudara operasi dan penyelenggaraan dan akhirnya mendapati bahawa ia adalah masalah yang dikonfigurasikan dalam proksi terbalik Nginx .

Serpihan konfigurasi pelayan nginx adalah seperti berikut :

Anda boleh melihat bahawa parameter proxy_pass menghala ke protokol HTTP, jadi URL yang diperoleh di latar belakang adalah semua protokol HTTP.

Tetapkan proksi kepada

dan masalah akan diselesaikan

Disyorkan: "
location / {
    proxy_pass http://114.114.114.114:80;
  }
Tutorial Pembangunan WeChat

"

Atas ialah kandungan terperinci Ringkasan masalah kehilangan Perujuk (pembayaran WeChat H5). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam