我是AngularJS的新手,我的任务是使用它来创建Headless Drupal界面。
我遇到了以下错误的问题:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
The number of request header fields exceeds this server's limit.</p>
<hr>
<address>Apache/2.4.7 (Ubuntu) Server at 127.0.0.1 Port 80</address>
</body></html>
以下是我使用的代码:
//test function
$scope.test = function() {
console.log("NODE Test function responding!");
var user_session = $cookieStore.get('user_session');
console.log(user_session);
var nodeObj = {
"title": "Node Test",
"body": "Node body contents test#2",
"type": "page"
};
var nodeObj = {
"type": "page",
"title": "New Page",
"language": "und"
};
var res = $http.post("http://mydrupal-services-site/angularjs-headless/api/v1/node", nodeObj, {
"headers": user_session
});
res.success(function(data, status, headers, config) {
$scope.message = data;
console.log("Success: ");
console.log(data);
});
res.error(function(data, status, headers, config) {
console.error(data);
});
}
搜索之后,我发现了一条帖子,建议在我的VirtualHost中添加LimitRequestFieldSize 16384
可以解决问题,但事实并非如此。
更新
我的 user_session 变量包含以下内容(长度仅为144个字符):
Cookie:SESSb22b2ff3837c37411e0b1da3fbd77b0c=_bwpgljhXPwcA_ZfmZpL2IrnIvo25PX_APYdzrIcM08 X-CSRF-Token:GwXcAwctxVcOi_FvI-Mfm6HYQaLoWAFnvkQQ-Nnzbhs
答案 0 :(得分:0)
请求标头字段的数量超出了此服务器的限制。
默认情况下,您可以在标头中发送最大8KB(apache2)。这样,{"headers": user_session}
要在标题中发送很长时间。尝试将其附加到节点对象上或将用户会话字符串剪切为最大8KB(6.028字符)。顺便说一句。您连续两次定义nodeObj
。这个问题与drupal无关。
$scope.test = function() {
var nodeObj = {
"title": "Node Test",
"body": "Node body contents test#2",
"type": "page",
"userSession": $cookieStore.get('user_session')
};
$http.post(
"http://mydrupal-services-site/angularjs-headless/api/v1/node",
nodeObj
).then(function(data, status, headers, config) {
$scope.message = data;
console.log("Success:");
console.log(data);
}).then(function(data, status, headers, config) {
console.error(data);
});
}