AngularJS $http.post 服务器不允许使用方法 OPTIONS 的请求



我正在尝试对服务器进行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
    });

最新更新