通过Angular创建新节点

时间:2016-01-15 19:55:04

标签: angularjs rest drupal drupal-8

我正在尝试通过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

0 个答案:

没有答案