长方形post体空

Rectangular post body empty

我正在尝试 post 使用矩形的新用户访问我的服务器。 post 失败,因为 post 正文始终为空白。

var userData = data.logged_in_user;
var userDetails = {
    id: userData.pk,
    username: userData.username,
    pic: userData.profile_pic_url,
    full_name: userData.full_name
};

Restangular.all('users').post(userDetails)
.then(function() {
  console.log('Success')
})
.catch(function() {
  console.log('Error')
});

我的代码中没有拦截器,但是当我添加一个并注销值时,元素值填充了 userDetails。

这是 HTTP 请求:

OPTIONS /api/users HTTP/1.1
Host: myserver.com
Accept-Language: en-us
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12F69 (2019885536)
Accept: */*
Referer: http://192.168.1.67:8100/?restart=250098
Access-Control-Request-Method: POST
Connection: keep-alive
Access-Control-Request-Headers: accept, origin, content-type
Content-Length: 0
Origin: http://192.168.1.67:8100
Accept-Encoding: gzip, deflate

您是否有相同域限制的问题?您的请求不是 POST 而是 OPTIONS 请求。通常浏览器使用此请求来检查来自服务器的权限和其他信息。

通常,当您在浏览器中工作时,您只能向页面的同一域发出请求(如果是 cordova,则为 file:///)。有很多方法可以克服这个限制,CORS 是主题之一。它们只是 headers 从服务器发送的,告诉浏览器信任他,浏览器使用 OPTIONS 请求加载那些 headers(更多信息在这里 http://en.wikipedia.org/wiki/Cross-origin_resource_sharing)。

当您在 cordova 中工作时,您可以在 config.xml

中使用一个简单的标签来指定禁用相同的域限制
<access origin="*" />

但是,如果您将代码输入到浏览器中,或者您没有指定此标记,则 cordova 视图请求 headers 带有该 OPTION 请求。

希望对您有所帮助