2017-02-14 5 views
0

mongooseを使用してmongodbのレコードを削除する必要があります。ここで角2:メソッドは、プリフライトレスポンスのAccess-Control-Allow-MethodsでDELETEを許可していません

は私のコンポーネントである

deleteProduct(product){ 
     this._confirmationService.confirm({ 
      message: 'Are you sure you want to delete the item?', 
      accept:() => { 
       this._productsAdminService.deleteProduct(product._id) 
        .subscribe(products => { 
         products.forEach(function(product){ 
          if(product.cat_id === 1) product.catName = 'Dota Shirts'; 
          if(product.cat_id === 2) product.catName = 'Gym Shirts'; 
          if(product.cat_id === 3) product.catName = 'Car Shirts'; 
         }); 
         this.products = products; 
        }, 
        err => console.log(err)); 
      } 
     }) 
    } 

基本的にこれはただのHTTPリクエストを実行するために、サービスに製品IDを渡します。

は、ここに私のサービス

deleteProduct(productId){ 
    let headers = new Headers({'Authorization': 'JWT ' + localStorage.getItem('currentUserToken')}); 
    let options = new RequestOptions({ headers: headers}); 
    return this._http.delete('http://localhost:3000/admin/products/delete/' + productId, options) 
     .map((response: Response) => response.json()) 
     .catch(this._handlerError); 
} 

私はexpressJSで私のAPIを呼び出すには、deleteメソッドを使用しています。ここで

は私のAPI

productsAdminRouter.route('/delete/:productId') 
    .delete(function(req,res){ 
     id = req.params.productId; 
     console.log(id); 
     Products.findByIdAndRemove(id) 
      .exec(function(err, done){ 
       if (err) throw err; 
       Products.find() 
        .exec(function(err, products){ 
         res.json(products); 
        }); 
      }); 
    }); 

しかし、私はいつもこのエラー

enter image description here

誰が助けることはでき

を得たのですか?私は立ち往生している。私は、Java-春のバックエンドで作業するときに、他の日に同じ問題を抱えていた

答えて

0

:何が起こっているのクロスオリジンリソース共有(または単にcors)、角度が実際の前pre-flight要求を送信する(ここではをDELETE )リクエストはOPTIONS(http)のタイプです。

何がしなければならないことである。

  • は、あなたのサーバがその特定のエンドポイント(/delete/:productId
  • にOPTIONS要求がの応答にAccess-Control-Allow-Methodsヘッダを追加し受け入れることを確認し、サーバー
  • のCORSを有効にしますOPTIONS、@flashjprが言っ全く同じよう
+0

私のコードにaccess-control-allow-methodヘッダーをどこにどこに置くべきか教えていただけますか?今私は認証ヘッダーを持っており、アクセス制御をどのように置くべきかわかりません。私はすでにcorsを有効にしています –

+0

try res.header( "アクセス制御許可ヘッダー"、 "承認、発信元、X要求済み、コンテンツタイプ、承諾"); res.header( "アクセス制御を許可するメソッド"、 "パッチを適用、POST、取得、削除、オプション"); if( 'オプション' === req.method){ return res.send(200); } – flashjpr

0

をDELETE

私はエンティティ "チケット"に特別なミドルウェアを書かなければなりませんでした。

var allowDelete = function(req, res, next){ 
    res.append('Access-Control-Allow-Methods', 'DELETE') 
    next() 
} 

app.use('/tickets', allowDelete, tickets); 

EDITそのエンティティの最初のミドルウェアに渡し:私はexpressjsを使用していたんです。

関連する問題