我正在尝试通过Angular使用drupal 8的restful API创建一个新节点,我似乎无法弄明白。我的角度应用的域名为http://ang.dev:8888
,我的drupal安装域名为http://dang.dev:8888
当我提出请求时,我的D8安装会向控制台返回2行:
OPTIONS http://dang.dev:8888/entity/node
XMLHttpRequest cannot load http://dang.dev:8888/entity/node. Response for preflight has invalid HTTP status code 415
我的drupal 8安装位于http://dang.dev:8888,根据this页面,/entity/node
是您可以POST来创建新节点的地方。
我提交新文章的服务如下:
app.service('D8', function($http, Token) {
var config = {
headers: {
'Content-Type': 'application/hal+json',
'Authorization': 'Basic YWRtaW46YWRtaW4=',
'X-CSRF-Token': ''
},
timeout: 20000
};
var token = Token.setToken().then(function(response) {
config.headers['X-CSRF-Token'] = response.data;
log(config.headers);
});
return {
submitArticle: function(title, body) {
var params = {
type: [{'target_id': 'article'}],
title: [{'value': title}],
body: [{'value': body}]
};
return $http.post('http://dang.dev:8888/entity/node?_format=hal_json', params, config);
}
}
});
X-CSRF-Token
已在我提交文章请求时设置。
修改
在dang.dev上通过.htaccess
启用CORS,以便ang.dev可以点击它:
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, PATCH, DELETE"
Header always set Access-Control-Allow-Headers: Authorization