2016-06-24 3 views
0

В моем приложении node.js, express.js Я пытаюсь отправить данные json в http://localhost:3000/api/delivered. HTML-файл-Перекрестный домен jQuery AJAX post JSON data

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

    }); 

Я получаю error-

XMLHttpRequest не может загрузить http://localhost:3000/api/delivered. Ответ на запрос перед полетом не проходит проверку контроля доступа. Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе. Поэтому исходный 'null' не допускается.

+0

домен вы вызываете не поддерживает CORS, так что вы» повторно блокируется [той же политикой происхождения] (http://en.wikipedia.org/wiki/Same-origin_policy). Предполагая, что у вас есть контроль над доменом, необходимым для включения заголовков CORS на сервере. Если у вас нет контроля над сервером, вам придется использовать одно из обходных решений, перечисленных в вопросе I, отмеченном как дубликат. –

+0

Я проверил несколько решений, но они не работали для меня. Вот почему я опубликовал свой код. Спасибо, в любом случае, я проверю вопрос, который вы отметили как дубликат. –

ответ

0

Попробуйте добавить следующее промежуточное программное обеспечение для вашего NodeJS/Экспресс-приложение

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

Другой способ, как показано ниже:

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 Я внес изменения ошибка. Можете ли вы проверить, правильно ли я это сделал, это будет очень полезно. –

Смежные вопросы