必威体育Betway必威体育官网
当前位置:首页 > IT技术

一则“HTTP 405 Method Not Allowed”的解决办法

时间:2019-08-16 16:43:20来源:IT技术作者:seo实验室小编阅读:81次「手机版」
 

405 not allowed

在angular 1.4版本的项目中,程序一直运行正常,突然有一天,在提交表单时,提示“HTTP 405”错误——“Method Not Allowed”。

从字面上的意思理解,很显然是提交方法的类型错误,要么是以GET方式向POST接口提交数据,要么是POST方式项GET接口提交数据,但反反复复检查了后端接口与提交方式,都是POST,完全没有问题。

仔细检查前端代码,发现编写方式如下:

$http({
    method : 'POST',
    url : '/test',
    params : {
        cycle : key,
        emp_id : user.id
    }
 }).success(function (resp) {
    //  处理逻辑
 });

这样的编程方式有两个问题:

1. 提交的参数暴露在外;

2. 默认提交的Header参数“content-type”为“APPlication/json”;

但经过反复的实验,请参见《浏览器查询参数与表单数据的优先级》,第一个问题不会导致405错误,所以很容易确定问题所在,解决办法是明确指定“content-type”,如下:

$http({
    method : 'POST',
    url : '/test',
    params : {
        cycle : key,
        emp_id : user.id
    },
    //  新增content-type头部属性
    heads : {
        'content-type' : 'application/x-www-form-urlencoded'
    }
 }).success(function (resp) {
    //  处理逻辑
 });

如果要解决第一个问题,那么只需要引入$httpParamserializer服务即可,如下:

$http({
    method : 'POST',
    url : '/test',
    //  以表单方式提交,将Object转换为form参数方式
    data : $httpParamSerializer({
        cycle : key,
        emp_id : user.id
    }),
    //  新增content-type头部属性
    heads : {
        'content-type' : 'application/x-www-form-urlencoded'
    }
 }).success(function (resp) {
    //  处理逻辑
 });

结论

在发生HTTP 405错误,不妨首先检查下请求头部的“content-type”信息。

相关阅读

http400错误经历

一、先引用一下别的处理方案 Http的Get/Post请求带有特殊字符,400 Bad Request解决方案 今天做项目的时候,需要向服务器接口 传递 j

WinHTTP功能函数

参考博客:https://blog.csdn.net/thanklife/article/details/70909661WinHTTP提供以下功能:WinHttpAddRequestHeaders 向HTTP请求句

吴昕王小牙OMG闺蜜服饰馆淘宝店网址 https://shop1059

吴昕和王小牙说说: OMG是昕昕与牙牙筹备已久的闺蜜私服馆,这时一个充满爱与真诚的小店,设计主要以丰富的狗屎与新潮的元素结合为主。

HTTP协议详解

1.1 HTTP协议简介 我们日常生活中经常会使用浏览器访问Web站点,但是大家有思考过在这个过程中到底发生了什么吗?为什么我们在浏览

http错误码

项目中会经常出现以下错误码: 4xx请求错误 400  请求参数有误 401 没有权限,未授权 403 服务器拒绝请求(禁止) 404 找不到页面 405

分享到:

栏目导航

推荐阅读

热门阅读