2016-10-13 33 views
3

我有一個服務器上運行的API和連接到它的前端客戶端來檢索數據。我對跨域問題做了一些研究並使其工作。不過,我不確定發生了什麼變化。我現在在控制檯出現這個錯誤:Express JS:沒有'Access-Control-Allow-Origin'標題出現在請求的資源

XMLHttpRequest無法加載https://api.mydomain/api/status。否 「訪問控制 - 允許來源」標題出現在請求的 資源中。原因'http://beta.mydomain.com'因此不允許 訪問。響應有HTTP狀態代碼502

我有以下路徑文件:

var express = require('express'); 
var router = express.Router(); 
var Assessment = require('../app/models/assessment'); 

router.all('*', function (req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS'); 
    res.header('Access-Control-Allow-Headers', 'Content-Type'); 
    next(); 
}); 


router.post('/api/status', function (req, res, next) { 
    getStatus.getStatus(req, res, Assessment); 
}); 

module.exports = router; 

而且下面的JavaScript調用Ajax來這條路線:

var user = { 
    'uid' : '12345' 
}; 
$.ajax({ 
    data: user, 
    method: 'POST', 
    url: 'https://api.mydomain/api/status', 
    crossDomain: true, 
    done: function() { 
    }, 
    success: function (data) { 
     console.log(JSON.stringify(data)); 
    }, 
    error: function (xhr, status) { 

    } 
}); 

我曾嘗試: 將請求域放在'Access-Control-Allow-Origin'頭中 使用cors模塊進行快遞 將我的router.all函數放入i nside中間件

請求域是HTTP,並且api域在HTTPS上。但是,我已經在HTTP啓用的情況下工作。

有沒有人有任何洞察,爲什麼'訪問控制 - 允許來源'頭沒有被髮送?

謝謝

回答

8

相反,請求頭設置爲您的明確路線,你可以嘗試設置它來表達實例本身喜歡這個,

var express = require('express'); 
var app = express(); 
var Assessment = require('../app/models/assessment'); 

app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

app.post('/api/status', function (req, res, next) { 
    // your code goes here 
}); 

module.exports = app; 

希望這有助於!

+0

非常感謝!你是一個救世主 –

+0

@Anil庫馬爾,很高興它幫助! –

相關問題