2016-11-28 49 views
1

我有我的應用程序在本地計算機上運行,​​它試圖連接到我的遠程nodeJS/Express服務器。我在遠程服務器中設置了標題。允許遠程服務器接受來自本地主機的帶有參數的請求

主要問題:如何讓我的遠程服務器接受來自本地主機的帶參數的請求?人們告訴我,我的請求不起作用,因爲請求的URL和服務器URL不共享相同的域。該請求來自我的本地主機,它試圖訪問我的遠程節點/快遞服務器。 當我在請求中刪除參數時,此事務有效,但當我有參數時不起作用。

這是怎麼了我在遠程服務器上設置頭接受所有請求:

app.use(function (req, res, next) { 
    res.setHeader("Access-Control-Allow-Origin", "http://localhost:9000"); 
    res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 

    if(res.headersSent) { 
    console.log("Headers sent"); 
    } 
    else { 
    console.log("Headers not sent"); 
    } 
    next(); 
}); 

此外,res.headersSent不斷評估,以虛假的,即使我可以看到在我的谷歌網絡選項卡中設置的標頭。爲什麼這個值返回false?

這是怎麼了,我從我的本地主機使我的GET請求,我的服務器:

var req = $http({ 
     url: 'https://20161128t135355-dot-jarvis-hd-live-2.appspot-preview.com/read-message', 
     method: 'GET', 
     cache: false, 
     params: {last_updated: last_updated_time} 
    }); 

這篇文章是無益How to enable cross-origin resource sharing (CORS) in the express.js framework on node.js

我覺得params爲導致錯誤,因爲它工作正常當我把它拿出來。我得到這個錯誤:

XMLHttpRequest cannot load https://20161128t135355-dot-jarvis-hd-live-2.appspot-preview.com/read-message?last_updated=0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access. The response had HTTP status code 502. 

所有的解決方案,說要添加/設置頁眉和你可以看到我已經做到了,但我的應用程序仍然給了我同樣的錯誤,當我包括在請求參數。我應該做什麼不同?

+0

你確定頭文件正在接收?你在瀏覽器中看到預檢請求嗎?客戶端的流量是什麼樣的? – ssube

+0

@ssube如何檢查標題是否被接收? –

+0

什麼是錯誤或迴應? –

回答

0

因此,這意味着您的問題是當您向請求添加參數時,您的服務器端代碼會引發錯誤。你需要調試。 CORS的東西幾乎肯定是不相關的。

這個問題不是CORS問題,它與我的params請求有關。爲了解決這個問題,我必須像這樣配置body-parser:

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 

這有助於從服務器向客戶端發送JSON數據,反之亦然。你可以在這裏找到更多的信息:http://junerockwell.com/difference-parameters-query-strings-express-js/

相關問題