2016-05-31 149 views
0

我我的本地機器上運行兩個應用程序燒瓶請求數據。HTTP從本地服務器

1)我的測試客戶端的網站(在端口5001)

2)我的API(在端口5000)

如果鍵入127.0.0.1:5000/search/到我的瀏覽器,我得到如下:

Test Hello World 

如果鍵入127.0.0.1:5001到我的瀏覽器我得到一個包含以下HTML代碼的普通網頁(這一切看起來OK):

<!DOCTYPE html> 
<html> 
<body> 

<button type="button" onclick="loadDoc()">Request data</button> 

<p id="demo">TEST</p> 

<script> 

function loadDoc() { 
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
    if (xhttp.readyState == 4 && xhttp.status == 200) { 

     document.getElementById("demo").innerHTML = xhttp.responseText; 
    } 
    }; 
    xhttp.open("GET", "127.0.0.1:5000/search/", true); 
    xhttp.send(); 
} 
</script> 

</body> 
</html> 

正如你所看到的HTTP請求發送到該測試並在瀏覽器中工作,應返回Test Hello World但遺憾的是沒有任何反應127.0.0.1:5000/search/

基本上,我點擊「請求數據」按鈕(見上文),絕對沒有任何反應。

任何想法,爲什麼?我一直堅持這幾個小時。

回答

2

出於安全原因,瀏覽器限制從腳本內發起的跨源HTTP請求。例如,XMLHttpRequest遵循同源策略。因此,使用XMLHttpRequest的Web應用程序只能向自己的域發出HTTP請求。爲了改進Web應用程序,開發人員要求瀏覽器供應商允許XMLHttpRequest發出跨域請求。

這些資源可能會有所幫助;
HTTP access control (CORS)
Using CORS

0
"127.0.0.1:5000/search/" 

您的網址缺少的方案。你需要用http://作爲前綴。

如果你打開瀏覽器的開發者工具,並期待在網絡選項卡,你應該會列出一個404錯誤。


一旦你解決這個問題,它很可能爲this question

描述,你就會有一個跨源錯誤