[英]Post request works but Put request doesn't in angular 2
我以角度 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');
});
}
我的观点调用我的服务:
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(记录的记录 id),如 API 帮助中提到的 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());
}
如果你已经为 IIS 创建了 Web API,那么检查你是否有 CORS 处理程序,并检查你的 Web.config 中是否有这个:
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.