我正在尝试对服务器进行HTTP帖子。
我必须发送的数据是JSON对象。
问题在于,$ http. -post在Angular中使用选项。
我可以做这个配置
.config(['$httpProvider', function ($httpProvider) {
//Reset headers to avoid OPTIONS request (aka preflight)
$httpProvider.defaults.headers.common = {};
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.put = {};
$httpProvider.defaults.headers.patch = {};
}])
以及从选项到发布的更改,但我无法将内容类型设置为"应用程序/JSON",并且我将获得" 415未支持的媒体类型"
谢谢
$ http.post in Angular中的post不会用选项覆盖该方法。看来,您正在尝试在不同的域中调用与JS代码来自的API。这称为跨域。在这种情况下,浏览器会执行带有选项的前飞行请求,以查看返回的标头。在您的后端响应中,您应该添加标题Access-Control-Allow-Origin: *
。当浏览器看到该标头时,他执行了实际的帖子请求。
更多详细信息:https://developer.mozilla.org/en/docs/http/access_control_cors
希望这有帮助!
add
$httpProvider.defaults.headers.post['Content-Type'] = 'application/json';
,但请注意,这将在全球设置内容类型标题。
如果您需要设置每个呼叫的内容类型,则应使用$http.post
$http.post("/foo/bar", requestData, {
headers: { 'Content-Type': 'application/json'},
transformRequest: transform
}).success(function(responseData) {
//do stuff with response
});