1.接口用Python Flask RestFul开发的接口,初始化App的时候添加了cors的设置
,然后再微信开发者工具(就是小程序开发工具)中调试可以跨域请求回结果来,
问题是:将连接发送到手机端打开就请求不到数据
2.代码如下
后端接口的cors配置如下
app = Flask(__name__)
CORS(app, supports_credentials=True)
api = Api(app)
前端请求如下
var xmlhttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var jsonString = xmlhttp.responseText;
var objc = JSON.parse(jsonString);
var json_objc1 = objc['Data']
document.getElementById("showNumber").innerHTML = "号码:" + json_objc1['name_id'] + "<br/>" + "姓名:" +json_objc1['name'];
document.getElementById("button").innerHTML = "修改简介";
suessFlag = 1;
} else {
alert(xmlhttp.status)
}
//就是这里的端口和本身网站的IP是一样的,端口不同,这种跨域
var url_3 = 'https://域名:端口/getInfo
xmlhttp.open("POST", url_3, true);
xmlhttp.setRequestHeader('Access-Control-Allow-Origin', '*')
xmlhttp.setRequestHeader("access-control-allow-credentials", "true")
xmlhttp.setRequestHeader("Content-type", "application/json")
xmlhttp.send(JSON.stringify(temp));
然后把xmlhttp.status的状态码打印出来,发现状态码是0,百度出来0代表还未初始化,初始化失败
所以想问下这是什么原因哪里的参数不对
参考GPT和自己的思路:
根据你提供的代码和情况,我认为可能是由于以下几个原因导致的:
CORS(app, supports_credentials=True, origins='*', allow_headers=["Content-Type", "Authorization", "Access-Control-Allow-Credentials"])
这样,服务端返回的响应头中就会带有 Access-Control-Allow-Credentials
和 Access-Control-Allow-Origin
这两个信息。
在前端请求中,第20行代码中的 https://域名:端口/getInfo
需要替换为真实的 URL,如果 URL 不正确,则会导致请求失败。
在前端请求中,应该将第19行代码挪到前面,先设置好请求方式和 URL,再去设置请求头和发送请求:
var url_3 = 'https://域名:端口/getInfo';
xmlhttp.open("POST", url_3, true);
xmlhttp.setRequestHeader("Content-type", "application/json");
xmlhttp.send(JSON.stringify(temp));