Rumah hujung hadapan web tutorial js axios中的302状态码

axios中的302状态码

Jun 08, 2018 pm 05:30 PM
axios kod status

这次给大家带来axios中的302状态码,使用axios中302状态码的注意事项有哪些,下面就是实战案例,一起来看一下。

比如说浏览器打开了一个单页面(SPA)应用,过了一段时间token(或者session)过期了,这个时候页面上发起 Ajax请求之后,后端返回302状态码跳转到login页面。 我这是使用的是 Vue + axios ,发现 axios 无法拦截到 302请求,下面是处理的过程。

思考

google axios 302 handle 看到 axios github 上的两个讨论

•  https://github.com/axios/axios/issues/932

•  https://github.com/axios/axios/issues/980

得到的结论就是:浏览器发送的ajax请求,服务端返回了302状态码,浏览器会自行跳转,我们无法通过 js 库(jquery, axios) 直接得到并自定义处理流程,只能等到浏览器重定向之后的url获取相应信息。

axios 发送ajax -->
server 返回302和location -->
浏览器请求新的url -->
服务端返回200 -->

axios 获取结果

那么怎么解决呢?需要服务端配合解决

Brower (ajax and not auth) -->
server判断是ajax请求,未登陆,返回 401状态码 -->
浏览器 axios 拦截401,并且通过js 跳转到 /login

解决

浏览器端, axios 增加拦截器

axios.interceptors.response.use((response) => {
  return response;
}, function (error) {
  if (401 === error.response.status) {
    window.location = '/login';
  } else {
    return Promise.reject(error);
  }
});
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
Salin selepas log masuk

后端代码,使用flask框架,看个流程就行,验证请求是否是 ajax 和 未登陆,然后返回401状态码

from flask import Blueprint, request, jsonify, make_response, abort
from flask_login.utils import current_user, current_app
apibp = Blueprint('api', 'api_bp')
# 主要逻辑
def bp_login_required():
  if not current_user.is_authenticated:
    if request.is_xhr:
      abort(401)
    else:
      return current_app.login_manager.unauthorized()
apibp.before_request(bp_login_required)
@apibp.route("/report/domains/<month>/", methods=["GET"])
def monthly_domains(month):
  return jsonify({})
ref
Salin selepas log masuk

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

如何使用vue请求本地json

JS操作JSON数组去重

Atas ialah kandungan terperinci axios中的302状态码. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah yang perlu saya lakukan jika 'Ralat Tidak Ditangkap (dalam janji): Permintaan gagal dengan kod status 500' berlaku apabila menggunakan axios dalam aplikasi Vue? Apakah yang perlu saya lakukan jika 'Ralat Tidak Ditangkap (dalam janji): Permintaan gagal dengan kod status 500' berlaku apabila menggunakan axios dalam aplikasi Vue? Jun 24, 2023 pm 05:33 PM

Sangat biasa untuk menggunakan axios dalam aplikasi Vue ialah klien HTTP berasaskan Promise yang boleh digunakan dalam penyemak imbas dan Node.js. Semasa proses pembangunan, mesej ralat "Uncaught(inpromise)Error: Requestfailedwithstatuscode500" kadangkala muncul untuk pembangun, mesej ralat ini mungkin sukar difahami dan diselesaikan. Artikel ini akan meneroka perkara ini

Apakah yang perlu saya lakukan jika 'TypeError: Failed to fetch' berlaku apabila menggunakan axios dalam aplikasi Vue? Apakah yang perlu saya lakukan jika 'TypeError: Failed to fetch' berlaku apabila menggunakan axios dalam aplikasi Vue? Jun 24, 2023 pm 11:03 PM

Baru-baru ini, semasa pembangunan aplikasi Vue, saya menghadapi masalah biasa: "TypeError: Failedtofetch" mesej ralat. Masalah ini berlaku apabila menggunakan axios untuk membuat permintaan HTTP dan pelayan bahagian belakang tidak bertindak balas kepada permintaan dengan betul. Mesej ralat ini biasanya menunjukkan bahawa permintaan tidak boleh sampai ke pelayan, mungkin disebabkan oleh sebab rangkaian atau pelayan tidak bertindak balas. Apakah yang perlu kita lakukan selepas mesej ralat ini muncul? Berikut ialah beberapa penyelesaian: Semak sambungan rangkaian anda disebabkan oleh

Pilihan permintaan data dalam Vue: Axios atau Fetch? Pilihan permintaan data dalam Vue: Axios atau Fetch? Jul 17, 2023 pm 06:30 PM

Pilihan permintaan data dalam Vue: AxiosorFetch? Dalam pembangunan Vue, mengendalikan permintaan data adalah tugas yang sangat biasa. Memilih alat yang hendak digunakan untuk permintaan data adalah persoalan yang perlu dipertimbangkan. Dalam Vue, dua alatan yang paling biasa ialah Axios dan Fetch. Artikel ini akan membandingkan kebaikan dan keburukan kedua-dua alat dan memberikan beberapa kod sampel untuk membantu anda membuat pilihan anda. Axios ialah klien HTTP berasaskan Promise yang berfungsi dalam penyemak imbas dan Node.

Pengenalan kepada kod status HTTP 525: teroka definisi dan aplikasinya Pengenalan kepada kod status HTTP 525: teroka definisi dan aplikasinya Feb 18, 2024 pm 10:12 PM

Pengenalan kepada kod status HTTP 525: Fahami definisi dan penggunaan kod status HTTP (HypertextTransferProtocol) 525 bermakna pelayan mempunyai ralat semasa proses jabat tangan SSL, mengakibatkan ketidakupayaan untuk mewujudkan sambungan selamat. Pelayan mengembalikan kod status ini apabila ralat berlaku semasa jabat tangan Keselamatan Lapisan Pengangkutan (TLS). Kod status ini termasuk dalam kategori ralat pelayan dan biasanya menunjukkan konfigurasi pelayan atau masalah persediaan. Apabila pelanggan cuba menyambung ke pelayan melalui HTTPS, pelayan tidak mempunyai

Bagaimana untuk menyelesaikan masalah 'Ralat: Ralat Rangkaian' apabila menggunakan axios dalam aplikasi Vue? Bagaimana untuk menyelesaikan masalah 'Ralat: Ralat Rangkaian' apabila menggunakan axios dalam aplikasi Vue? Jun 25, 2023 am 08:27 AM

Bagaimana untuk menyelesaikan masalah "Ralat: NetworkError" apabila menggunakan axios dalam aplikasi Vue? Dalam pembangunan aplikasi Vue, kami sering menggunakan axios untuk membuat permintaan API atau mendapatkan data, tetapi kadangkala kami menghadapi "Ralat: NetworkError" dalam permintaan axios. Apakah yang perlu kami lakukan dalam kes ini? Pertama sekali, anda perlu memahami maksud "Error:NetworkError" Ia biasanya bermaksud sambungan rangkaian

Gunakan Vue dan Axios dengan cekap untuk melaksanakan pemprosesan kelompok data bahagian hadapan Gunakan Vue dan Axios dengan cekap untuk melaksanakan pemprosesan kelompok data bahagian hadapan Jul 17, 2023 pm 10:43 PM

Gunakan Vue dan Axios dengan cekap untuk melaksanakan pemprosesan kumpulan data bahagian hadapan Dalam pembangunan bahagian hadapan, pemprosesan data adalah tugas biasa. Apabila kita perlu memproses sejumlah besar data, pemprosesan data akan menjadi sangat menyusahkan dan tidak cekap jika tiada kaedah yang berkesan. Vue ialah rangka kerja bahagian hadapan yang sangat baik, dan Axios ialah perpustakaan permintaan rangkaian yang popular. Mereka boleh bekerjasama untuk melaksanakan pemprosesan kumpulan data bahagian hadapan. Artikel ini akan memperkenalkan secara terperinci cara menggunakan Vue dan Axios dengan cekap untuk pemprosesan data kelompok dan memberikan contoh kod yang berkaitan.

Apakah yang perlu saya lakukan jika 'TypeError: bind is not a function' berlaku apabila menggunakan axios dalam aplikasi Vue? Apakah yang perlu saya lakukan jika 'TypeError: bind is not a function' berlaku apabila menggunakan axios dalam aplikasi Vue? Jun 25, 2023 am 08:31 AM

Dalam aplikasi Vue.js, ia adalah perkara biasa untuk menggunakan axios. Axios ialah perpustakaan permintaan HTTP yang berkuasa yang membolehkan anda menghantar permintaan HTTP tak segerak dengan mudah. Walau bagaimanapun, apabila menggunakan axios, anda akan menghadapi beberapa ralat, salah satunya ialah "TypeError: bindisnotafunction". Ralat ini biasanya disebabkan oleh versi axios yang tidak serasi dengan Vue.js. Mari kita lihat penyelesaian kepada ralat ini. Pertama, kita perlukan

Fahami senario aplikasi biasa pengalihan halaman web dan fahami kod status HTTP 301 Fahami senario aplikasi biasa pengalihan halaman web dan fahami kod status HTTP 301 Feb 18, 2024 pm 08:41 PM

Kuasai maksud kod status HTTP 301: Senario aplikasi biasa pengalihan halaman web Dengan perkembangan pesat Internet, keperluan orang ramai untuk interaksi halaman web menjadi lebih tinggi dan lebih tinggi. Dalam bidang reka bentuk web, pengalihan halaman web adalah teknologi biasa dan penting, dilaksanakan melalui kod status HTTP 301. Artikel ini akan meneroka maksud kod status HTTP 301 dan senario aplikasi biasa dalam pengalihan halaman web. Kod status HTTP301 merujuk kepada ubah hala kekal (PermanentRedirect). Apabila pelayan menerima pelanggan

See all articles