我在本地计算机上运行了两个Flask应用程序。
1)我的测试客户网站(在端口5001上)
2)我的API(在端口5000上)
如果我在浏览器中输入#import "CommonCrypto/CommonCrypto.h"
,我会收到以下信息:
127.0.0.1:5000/search/
如果我在浏览器中输入Test Hello World
,我会得到一个包含以下HTML代码的普通网页(这看起来都很好):
127.0.0.1:5001
正如您所看到的,HTTP请求已发送到<!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>
,该请求已经过测试并在浏览器中工作,应该返回127.0.0.1:5000/search/
,但遗憾的是没有任何反应。
基本上,我点击“请求数据”按钮(见上文),绝对没有任何反应。
任何想法为什么?我已经被困在这几个小时了。
答案 0 :(得分:2)
出于安全原因,浏览器会限制从脚本中发起的跨源HTTP请求。例如,XMLHttpRequest遵循同源策略。因此,使用XMLHttpRequest的Web应用程序只能向其自己的域发出HTTP请求。为了改进Web应用程序,开发人员要求浏览器供应商允许XMLHttpRequest发出跨域请求。
这些资源可能会有所帮助;
HTTP access control (CORS)
Using CORS
答案 1 :(得分:0)
"127.0.0.1:5000/search/"
您的网址缺少其计划。您需要使用http://
作为前缀。
如果您打开浏览器的开发者工具并查看“网络”标签,则会看到其中列出的404错误。
一旦你解决了这个问题,你可能会遇到this question
中描述的Cross Origin错误