长方形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 请求。
希望对您有所帮助
我正在尝试 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 请求。
希望对您有所帮助