2017-04-14 55 views
2

我在Node.js中使用request.js http請求。請求後重定向沒有發佈數據

request({ 
    method: 'POST', 
    uri: 'http://www.example.com/getData', 
    followAllRedirects: true, 
    followOriginalHttpMethod: true, 
    json: true, 
    form: { 
    id: 1, 
    msg: 'Test data', 
    }, 
}, (err, res, body) => {}) 

讓發帖時{ id: 1, msg: 'Test data' }http://www.example.com/getData,代理會重定向到http://us.example.com/getData說。

上面的代碼重定向到http://us.example.com/getData,但是如何設置重定向和發佈數據?

回答

0

這將是很難做到的,如果不是不可能的話。

如果重定向是通過發送「301永久移動」或「302找到」 HTTP狀態代碼,然後在實踐中工作,就好像它的「303查看其它」被送到,即做了GET請求沒有數據在身上發送

List of HTTP status codes維基百科:

這是行業慣例矛盾的標準的一個例子。 HTTP/1.0規範(RFC 1945)要求客戶端執行 臨時重定向(原始描述短語爲「Moved Temporarily」),但流行的瀏覽器使用303 See Other的 功能實現了302。因此,HTTP/1.1添加狀態 代碼303和307來區分這兩種行爲。 然而,一些Web應用程序和框架使用302個狀態碼 就好像它是在303

有一個「307臨時重定向」(因爲HTTP/1.1),創建來解決這個問題是不允許改變的HTTP方法 - 所以從POST重定向仍然應該POST - 見百科:

在這種情況下,請求應與另一URI重複;但是,未來的請求應該仍然使用原始URI。在 與302歷史實施方式相比,請求方法 不允許在重新發送原始請求時更改。例如,對於 示例,應該使用另一個POST 請求重複POST請求。

但是,如果這將在特定情況下工作很難說,因爲它取決於您調用的API,並且需要對該API實現進行更改。

+0

因此,該標準不要求發佈重定向與原始發佈數據一起發送? – huachengzan