Rumah  >  Artikel  >  hujung hadapan web  >  Analisis kes penggunaan dan penyelesaian kod status 4xx dalam protokol HTTP

Analisis kes penggunaan dan penyelesaian kod status 4xx dalam protokol HTTP

WBOY
WBOYasal
2023-12-26 09:00:58810semak imbas

Analisis kes penggunaan dan penyelesaian kod status 4xx dalam protokol HTTP

Terokai senario aplikasi dan penyelesaian kod status 4xx dalam protokol HTTP

Pengenalan:
Dalam pembangunan web, protokol HTTP memainkan peranan yang sangat penting. Ia mentakrifkan peraturan dan konvensyen untuk komunikasi antara pelanggan dan pelayan. Antaranya, kod status merupakan pengecam yang digunakan oleh pelayan untuk menyampaikan status pemprosesan permintaan kepada klien. Dalam protokol HTTP, kod status 4xx menunjukkan bahawa ralat berlaku pada bahagian klien. Artikel ini akan meneroka senario aplikasi dan penyelesaian kod status 4xx dan memberikan contoh kod yang berkaitan.

1. Senario permohonan:

  1. 400 Permintaan Buruk: Menunjukkan bahawa pelanggan menghantar permintaan yang tidak sah.

    • Senario 1: Parameter permintaan adalah menyalahi undang-undang. Sebagai contoh, parameter yang diperlukan tiada, nilai parameter berada dalam format yang salah, dsb.
    • Senario 2: Format badan permintaan tidak betul. Sebagai contoh, badan permintaan hendaklah dalam format JSON, tetapi apa yang sebenarnya diserahkan adalah dalam format XML.
  2. 401 Tanpa Kebenaran: Menunjukkan bahawa pelanggan tidak disahkan atau pengesahan gagal.

    • Senario 1: Tiada bukti kelayakan pengesahan. Sebagai contoh, permintaan perlu membawa Token atau Kuki, tetapi pelanggan tidak memberikannya.
    • Senario 2: Pengesahan gagal. Contohnya, Token atau Kuki yang disediakan telah tamat tempoh atau tidak sah.
  3. 403 Dilarang: Menunjukkan bahawa pelayan menolak permintaan.

    • Senario 1: Pelanggan tidak mempunyai kebenaran untuk mengakses sumber tertentu. Contohnya, cuba mengakses antara muka atau fail API terhad.
    • Senario 2: Kekerapan akses terlalu tinggi. Sebagai contoh, pelayan dihadkan kepada 100 permintaan seminit, dan pelanggan melebihi had.
  4. 404 Tidak Ditemui: Menunjukkan bahawa sumber yang diminta oleh pelanggan tidak wujud.

    • Senario 1: Laluan URL yang diminta tidak wujud. Sebagai contoh, alamat URL yang salah telah dimasukkan.
    • Senario 2: Sumber yang diminta telah dipadamkan atau dialihkan. Sebagai contoh, akses artikel yang dipadamkan.

2. Penyelesaian:

  1. 400 Penyelesaian Permintaan Buruk:

    • Gunakan perpustakaan alat pengesahan parameter. Contohnya, sahkan kesahihan parameter permintaan, seperti sama ada parameter kosong, sama ada panjang memenuhi keperluan, dsb.
    • Gunakan ungkapan biasa untuk mengesahkan format badan permintaan. Sebagai contoh, ungkapan biasa digunakan untuk memadankan sama ada badan permintaan memenuhi keperluan format tertentu.

    Sampel kod:

    @RequestMapping(value = "/example", method = RequestMethod.POST)
    public ResponseEntity<String> example(@RequestBody ExampleRequest request) {
        if (StringUtils.isBlank(request.getName())) {
            return ResponseEntity.badRequest().body("Name cannot be blank");
        }
        if (!request.getAge().matches("\d+")) {
            return ResponseEntity.badRequest().body("Age must be a number");
        }
        // 处理正常流程
        return ResponseEntity.ok("Success");
    }
  2. 401 Penyelesaian yang tidak dibenarkan:

    • Sediakan antara muka pengesahan dan kembalikan Token atau Kuki. Pelanggan perlu menambah Token atau Kuki pada setiap permintaan.
    • Gunakan pemintas untuk memintas antara muka yang memerlukan pengesahan. Semak sama ada pengepala permintaan membawa Token atau Kuki yang sah.

    Sampel kod:

    public class AuthInterceptor extends HandlerInterceptorAdapter {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            String token = request.getHeader("Token");
            if (StringUtils.isBlank(token)) {
                response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
                response.getWriter().println("Authentication failed");
                return false;
            }
            // 验证Token的合法性
            // ...
            return true;
        }
    }
  3. 403 Penyelesaian terlarang:

    • Kawalan kebenaran untuk setiap sumber. Hanya pengguna yang mempunyai kebenaran yang mencukupi mempunyai akses.
    • Gunakan alat pengehad semasa untuk mengehadkan kekerapan permintaan. Apabila kekerapan permintaan melebihi had, kod status 403 Forbidden dikembalikan.

    Sampel kod:

    @RequestMapping(value = "/admin", method = RequestMethod.GET)
    @RequiresRoles("admin")
    public ResponseEntity<String> admin() {
        // 处理业务逻辑
    }
  4. 404 Tidak Ditemui penyelesaian:

    • Kembalikan halaman 404 tersuai apabila laluan URL yang diminta tidak wujud.
    • Rekodkan log dan maklumkan kepada kakitangan yang berkaitan. Jika sumber yang diminta telah dipadamkan atau dialihkan, maklumkan klien dan berikan alamat URL yang betul.

    Contoh kod:

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public ResponseEntity<String> getResource(@PathVariable("id") String id) {
        // 查询资源
        // 若资源不存在,则返回404 Not Found状态码
        if (resource == null) {
            return ResponseEntity.notFound().build();
        }
        // 处理正常流程
        return ResponseEntity.ok("Success");
    }

Kesimpulan:
Dengan meneroka senario aplikasi dan penyelesaian kod status 4xx, kita boleh lebih memahami maksud kod status 4xx dalam protokol HTTP dan menjadi lebih berkesan dalam pembangunan Tangani keadaan ralat ini dengan betul. Penggunaan kod status 4xx yang munasabah boleh memberikan pengalaman pengguna yang lebih baik untuk pelanggan dan juga membantu untuk menyelesaikan masalah dan pembaikan.

(Nota: Contoh kod di atas adalah contoh rangka kerja Java Spring MVC. Kaedah pelaksanaan bahasa pengaturcaraan dan rangka kerja lain mungkin berbeza, tetapi ideanya serupa)

Atas ialah kandungan terperinci Analisis kes penggunaan dan penyelesaian kod status 4xx dalam protokol HTTP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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