为了账号安全,请及时绑定邮箱和手机立即绑定

$http.post() 方法实际上是发送一个 GET

$http.post() 方法实际上是发送一个 GET

Go
浮云间 2021-12-27 18:09:13
笔记:我发现了一个可能相关的问题,需要在这里提出一个新问题这是一个奇怪的问题。我在 2 年的时间里一直在使用 angular,从来没有遇到过这个问题。我正在使用 angular v1.5.0。我正在发出这样的帖子请求:$http({    method: "POST",    url: "/myurl",    data: {        file: myFile // This is just an object    }});普通的 POST 请求对吗?得到这个。我查看控制台,“网络”选项卡将请求记录为 GET。奇怪。所以我把代码改成了这样:$http.post("/myurl", {file: myFile});一样。在逐步完成$http服务代码后,我确信标题设置正确。有没有其他人遇到过这个问题?更新考虑到germanio的建议,我尝试改用该$resource服务:promise = $resource("/upload").save()(这由于另一个原因返回错误,它仍然正确执行 POST)。我遇到了同样的问题:请求在控制台中被记录为 GET。以下是请求到达我的服务器时的标头:GET /myurl/ HTTP/1.1Host: localhost:8001Accept: application/json, text/plain, */*Accept-Encoding: gzip, deflate, sdchAccept-Language: en-US,en;q=0.8Cache-Control: no-cacheConnection: keep-alivePragma: no-cacheReferer: http://localhost:8001/myurl/User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36
查看完整描述

2 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

这是出于安全考虑。

在您将重定向从服务器发送回浏览器的情况下,浏览器不会重复 POST 请求(而只是一个“简单”的 GET 请求)。

一般来说,浏览器不会将 POST 数据发送到重定向 URL,因为浏览器没有资格决定您是否愿意将相同的数据发送到您打算发送到原始 URL 的新 URL(考虑密码,信用卡号和其他敏感数据)。但不要试图规避它,只需使用处理程序的注册路径来 POST 或链接答案中提到的任何其他提示。


查看完整回答
反对 回复 2021-12-27
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

此代码实际上将 GET 发送到服务器


$http({

            method: 'POST',            

            params: {

                LoginForm_Login: userData.username,

                LoginForm_Password: userData.password

            },

            url: YOURURL

        }).then(

您需要使用transformRequest,下面的示例实际发送POST


$http({

            method: 'POST',

            headers: { 'Content-Type': 'application/x-www-form-urlencoded' },

            transformRequest: function (obj) {

                var str = [];

                for (var p in obj)

                    str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));

                return str.join("&");

            },

            data: {

                LoginForm_Login: userData.username,

                LoginForm_Password: userData.password

            },

            url: YOURURL

        }).then(


查看完整回答
反对 回复 2021-12-27
  • 2 回答
  • 0 关注
  • 324 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信