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

笔记:

我发现了一个可能相关的问题,需要在这里提出一个新问题


这是一个奇怪的问题。我在 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.1

Host: localhost:8001

Accept: application/json, text/plain, */*

Accept-Encoding: gzip, deflate, sdch

Accept-Language: en-US,en;q=0.8

Cache-Control: no-cache

Connection: keep-alive

Pragma: no-cache

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


浮云间
浏览 325回答 2
2回答

胡说叔叔

这是出于安全考虑。在您将重定向从服务器发送回浏览器的情况下,浏览器不会重复 POST 请求(而只是一个“简单”的 GET 请求)。一般来说,浏览器不会将 POST 数据发送到重定向 URL,因为浏览器没有资格决定您是否愿意将相同的数据发送到您打算发送到原始 URL 的新 URL(考虑密码,信用卡号和其他敏感数据)。但不要试图规避它,只需使用处理程序的注册路径来 POST 或链接答案中提到的任何其他提示。

慕标琳琳

此代码实际上将 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(
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go