angular - 发布请求有效但 Put 请求不在 Angular 2

标签 angular http request put http-status-code-406

我在 Angular 2 中向 Rest API 发出 PUT 请求,但它不起作用。当我使用 POST 发出相同的请求时,它工作正常。

这是我的观点:

save(){
  this.params['user_id']=this.user_id;
  this.params['video_id']=this.video_id;
  this._dashboardService.update('uservalues',this.params)
    .subscribe(x=> {
      console.log('test');
    });
}

我的 View 调用我的服务:

update(data ,param?) {
  let authToken = localStorage.getItem('auth_token');
  var myObject = Object.assign({'auth_token':authToken}, param);
  let params={};
  for (var name in myObject) {
    params[name]=myObject[name];
  }

  let body=JSON.stringify(params);
  let headers = new Headers({ 'Content-Type': 'application/json' });
  return this._http
    .put(this._url+'test', body, headers)
    .map(res=> res.json());
}

我的控制台:

OPTIONS http://host.com/dev/api/test 406 (Not Acceptable)
XMLHttpRequest cannot load http://host.com/dev/api/test. Response for preflight
has invalid HTTP status code 406

我的标题(API):

    header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Request-Headers: Accept, Authorization");
header("Access-Control-Expose-Headers: Authorization");
header("Access-Control-Allow-Headers:X-Requested-With, Accept, Authorization");

当我在我的 API 中注释这段代码时,我的 PUT 请求有效

private function set_headers(){
            // header("HTTP/1.1 ".$this->_code." ".$this->get_status_message());
            header("Content-Type:".$this->_content_type);
        } 

有什么想法吗?

最佳答案

使用记录的id,如“ <强> http://host.com/dev/api/test "+id(record id of the record) as mentioed in the API help PUT api/test/{id}

update(data ,param?) {
  let authToken = localStorage.getItem('auth_token');
  var myObject = Object.assign({'auth_token':authToken}, param);
  let params={};
  for (var name in myObject) {
    params[name]=myObject[name];
  }

  let body=JSON.stringify(params);
  let headers = new Headers({ 'Content-Type': 'application/json' });
  return this._http
    .put(this._url+'test'+id, body, headers) //*use id here*
    .map(res=> res.json());
}

关于angular - 发布请求有效但 Put 请求不在 Angular 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38641280/

相关文章:

http - "+"在HTTP Accept header 中意味着什么?

c# - .net 中请求不等待响应

java - 每个请求是否访问同一个 servlet 对象?

angular - 如何在angular 2中实现aop

dart - pub serve 找不到 lib 下的文件

angular - 使用@angular/localize 对原始应用程序进行本地化后,如何将其设为 'ng serve'?

angular - 如何在 Angular 6 中使用 "routerLinkActive"和查询参数?

javascript - HTTP + JSON 简单 api 请求作为空白发送

java - 从 Java servlet 中的 POST 请求获取请求有效负载

requestAuthorizationToShareTypes 方法在 iOS 8 Xcode 6 中不显示权限提示