我有一个托管在https://
上的网站,我想在该网站上提取显示共享属性的网站数据。返回数据的URL是:
http://ir1.euroinvestor.com/asp/ir/xmlirmultiiso2.aspx?companyid=281191
我为获取数据而开发的代码如下:
function GetSharesUpdate(){
// makeing AJAX calls to the web service for getting the share update
var xhr = new XMLHttpRequest(); // Set up xhr request
xhr.open("GET", "http://ir1.euroinvestor.com/asp/ir/xmlirmultiiso2.aspx?companyid=281191", true); // Open the request
xhr.responseType = ""; // Set the type of response expected
xhr.send();
// Asynchronously wait for the data to return
xhr.onreadystatechange = function () {
if (xhr.readyState == xhr.DONE) {
var tempoutput = xhr.responseXML;
alert(tempoutput);
}
}
// Report errors if they happen
xhr.addEventListener("error", function (e) {
console.error("Error: " + e + " Could not load url.");
}, false);
}
我在语句xhr.send();
上收到错误,如下所示:
混合内容:“https://[SiteUrl]”页面是通过HTTPS加载的, 但是请求了一个不安全的XMLHttpRequest端点 'http://ir1.euroinvestor.com/asp/ir/xmlirmultiiso2.aspx?companyid=281191'。 此请求已被阻止;内容必须通过HTTPS提供。
如果我将网址更改为https
,即
https://ir1.euroinvestor.com/asp/ir/xmlirmultiiso2.aspx?companyid=281191
然后执行xhr.send();
时没有任何错误,但我得到xhr.responseXML
null。
我应该如何更改代码以使其正常工作?
答案 0 :(得分:0)
第一个问题是您正在向非https域执行ajax请求,但您的域已安装SSL。
第二个问题是交叉来源请求CORS
,即使你先解决也会遇到这个问题(即使你从非http域尝试ajax请求)。
由于您要从其他网站请求数据,除非请求的服务器配置为为您的域提供请求,否则最有可能发生这种情况 要解决此问题,您需要从服务器(代理服务器)调用数据,或者将请求的服务器配置为允许来自您域的请求。
了解详情 - https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS