跨域xmlhttp

Cal*_*vin 3 javascript php xmlhttprequest cross-domain same-origin-policy

我正在编写这个javascript,它将在几个其他域上使用,这些域调用一个php脚本(仅在我的域上)来返回一个数组.我正在使用xmlhttp,它在我的域上测试时效果很好,但是一旦从单独的域放置或调用javascript它就会完全中断.有人知道如何跨域提出此请求吗?

注意:我必须执行一个奇怪的小黑客,允许我进行两次单独的调用,并确保它们在处理之前都返回.无论如何,这在我的域名上每次都能完美运行.

这是调用我的PHP代码的javascript文件

function getUrls(){
if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
    xmlhttp2 = new XMLHttpRequest();
}
else {
    // code for IE5 and IE6
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    // code for IE5 and IE6
    xmlhttp2 = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function(){
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200 ) {
        parsedJSONurls = JSON.parse(xmlhttp.responseText);
        xmlhttp2.open("GET", "http://mydomain.com/connect.php?q=companies", true);
        xmlhttp2.send();
    }
}
xmlhttp2.onreadystatechange = function(){
    if (xmlhttp2.readyState == 4 && xmlhttp2.status == 200) {
        parsedJSONcompanies = JSON.parse(xmlhttp2.responseText);
        runLoop(parsedJSONurls, parsedJSONcompanies);
    }
}
xmlhttp.open("GET", "http://mydomain.com/connect.php?q=urls", true);
xmlhttp.send();
Run Code Online (Sandbox Code Playgroud)

}

Scu*_*zzy 11

尝试将此标头添加到您的connect.php文件中

header('Access-Control-Allow-Origin: http://domain1.com, http://domain2.com');
Run Code Online (Sandbox Code Playgroud)

如果您想允许所有域而不是白名单

header('Access-Control-Allow-Origin: *');
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en/http_access_control