我在这个CORS之间感到困惑? :-(
我只是向你求一点帮助。使用javascript CORS的XMLHttpRequest的完整源代码是什么?我是如何从发送的服务器获取json数据的。如果我可以使用地址栏访问json文件。我是如何从中获取这些数据的?
这是Json文件“Data.json”
{"JsonProjectIDResult": [{"_capacity": 15,"_description": "Meeting Room","_dev_default_view": 3,"_deviceID": 1,"_deviceName": "MobiTech","_deviceTypeID": 1,"_projectID": 1,"_roomID": 2,"_roomName": "Room2","_room_admin_mail": null}]}
这里是我的home.html简单脚本
var resultDiv = document.getElementById("results");
var newsURL = "http://10.1.128.106/JsonDohaBackToTemplate/getProjectIDByMAC.svc/mac/10:95:84:11:00:05";
var e;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
e = new XMLHttpRequest();
} else {
// code for IE6, IE5
e = new ActiveXObject("Microsoft.XMLHTTP");
}
e.onreadystatechange = function() {
var html = " ";
if (e.readyState == 4 && e.status == 200) {
response = JSON.parse(e.responseText);
if(typeof(e.responseText)==="string") {
d = e.responseText;
} else {
if (typeof(e.responseXML)==="object") {
d = e.responseXML;
};
}
var myData = response['JsonProjectIDResult'];
//Loop
var html = "<ul>";
var counter = 0;
for(var prop in myData[counter]) {
if(myData[counter].hasOwnProperty(prop))
html += "<li>" + prop + " = " + myData[counter][prop] + "</li>";
}
resultDiv.innerHTML = html;
}
};
e.open("GET", newsURL, true);
e.send();
答案 0 :(得分:2)
使用CORS不需要更改JavaScript。它由处理请求的服务器发送的HTTP头处理。
即。 example.com
包含想要从example.net
读取的JavaScript。 example.net
必须使用CORS授权example.com
读取该数据。
最基本的,example.net
需要包括:
Access-Control-Allow-Origin: http://example.com
在响应标题中。
更复杂的情况可能还需要为飞行前OPTIONS请求设置这些标题。
更多详细信息,请访问MDN。