2016-07-28 10 views
1

PUTリクエストを角度2のRest APIに送信しますが、機能しません。私がPOSTで同じ要求をすると、正常に動作します。ポストリクエストは機能しますが、Putリクエストはアンギュラ2にありません。

これが私の見解です:

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); 
     } 

任意のアイデアを作品? APIヘルプにmentioedよう " http://host.com/dev/api/test" + ID(レコードのレコードID)のようなレコードの

+0

「http: //preprod.pro:8888/clients/loomup/dev/api/test"+id(レコードのレコードID)APIヘルプに記載されています。PUT api/test/{id} – rashfmnb

+0

Rashfmnb、ありがとうございます。しかし、本当のURLを削除して、例えばhttp://host.com/dev/api/testのように書くことができますか? Ty。 – Xenofexs

答えて

0

使用IDが場合 API /試験/ {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()); 
} 
0

をPUTあなたはIIS用のWeb APIを作成し、CORSハンドラがあるかどうかをチェックし、Web.configにこれがあるかどうかを確認します。

<system.webServer> 
    <modules> 
    <remove name="WebDAVModule" /> 
    </modules> 
    <handlers> 
    <remove name="WebDAV" /> 
    </handlers> 
</system.webServer> 
関連する問題