我正在尝试使用矩形将新用户发布到我的服务器。帖子失败了,因为帖子的主体总是空白的。
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
答案 0 :(得分:1)
您是否可能遇到相同域名限制的问题?您的请求不是POST而是OPTIONS请求。通常,浏览器使用此请求来检查服务器的权限和其他信息。
通常,当您在浏览器中工作时,您只能向页面的同一域请求(file:///,如果是cordova)。有办法克服这个限制,CORS是主题之一。它们只是从服务器发送的标头,告诉浏览器信任他,浏览器使用OPTIONS请求加载这些标头(更多信息http://en.wikipedia.org/wiki/Cross-origin_resource_sharing)。
当您在cordova中工作时,您可以使用config.xml中的简单标记指定禁用相同的域限制
<access origin="*" />
但是如果您将代码插入浏览器或者您没有指定此标记,则cordova视图会请求包含该OPTION请求的标头。
希望这有帮助