2016-06-24 33 views
0

私のnode.jsでexpress.jsアプリケーションhttp://localhost:3000/api/deliveredにjsonデータを投稿しようとしています。 HTMLファイル -クロスドメインjQuery AJAX投稿JSONデータ

<html> 
<body> 
<input type="submit" value="submit" id="delivered"/> 
</body> 

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js" </script> 
<script type="text/javascript"> 

$('#delivered').on('click', function() { 
     var id = {"_id": "123"}; 

     $.ajax({ 
      type: 'POST', 
      url: 'http://localhost:3000/api/delivered', 
      contentType: 'application/json', 
      data : JSON.stringify(id), 
      dataType: "json", 
      success: function() { 
       console.log('Delivered'); 
      }, 
      error: function() { 
       alert('Error occured while entering'); 
      } 
     }); 

    }); 

私はhttp://localhost:3000/api/deliveredをロードすることはできませんエラー -

のXMLHttpRequestを取得しています。プリフライト要求への応答がアクセス制御チェックを通過しない:要求されたリソースに「アクセス制御許可」がない。したがって、原点「ヌル」はアクセスが許可されません。

+0

ので、あなた」 [同じオリジナルポリシー](http://en.wikipedia.org/wiki/Same-origin_policy)によってブロックされています。ドメインの制御権があると仮定すると、サーバー上でCORSヘッダーを有効にする必要があります。サーバーを制御できない場合は、重複とマークした質問に記載されている回避策の1つを使用する必要があります。 –

+0

私はいくつかの解決策を確認しましたが、私のために働いていませんでした。それが私の特定のコードを投稿した理由です。 とにかく、重複とマークした質問をチェックします。 –

答えて

0

てみてください、あなたのNodeJSに次のミドルウェアを追加/ Expressのアプリ

// Add headers 
    app.use(function (req, res, next) { 

     // Website you wish to allow to connect 
     res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8888'); 

     // Request methods you wish to allow 
     res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); 

     // Request headers you wish to allow 
     res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); 

     // Set to true if you need the website to include cookies in the requests sent 
     // to the API (e.g. in case you use sessions) 
     res.setHeader('Access-Control-Allow-Credentials', true); 

     // Pass to next layer of middleware 
     next(); 
    }); 

もう一つの方法は、以下の通りである:あなたが呼び出しているドメインは、CORSをサポートしていません

var cors = require('cors'); 

// use it before all route definitions 
app.use(cors({origin: 'http://localhost:8888'})); 
+0

私の中心的な 'app.js'と' api.js(ルーティング定義のためのもの) 'は次の通りです http://pastebin.com/ixHSQ5Bv http://pastebin.com/jRVRPvCS 私はまだ変更を加えましたエラー。私はそれを正しく行ったかどうか確認することができます、それは非常に役に立つでしょう。 –