【发布时间】:2012-03-20 18:42:47
【问题描述】:
我对 firefox 和 facebook 有很大的问题。 我在使用 xmlHttpRequest 的网络服务器上创建了一个应用程序。我将此应用程序添加到测试 facebook 页面上的 facebook 选项卡中。它适用于 IE、Chrome、Safari,但不适用于 firefox。
请求会一直加载直到超时。
我正在使用的 JS 函数:
function createXmlHttpRequest() {
try {
if (typeof ActiveXObject != 'undefined') {
return new ActiveXObject('Microsoft.XMLHTTP');
} else if (window["XMLHttpRequest"]) {
return new XMLHttpRequest();
}
} catch (e) {
changeStatus(e);
}
return null;
};
function downloadUrl(url, callback) {
var status = -1;
var request = createXmlHttpRequest();
if (!request) {
return false;
}
request.onreadystatechange = function() {
if (request.readyState == 4) {
try {
status = request.status;
} catch (e) {
}
if (status == 200) {
callback(request.responseXML, request.status);
request.onreadystatechange = function() {};
}
}
}
request.open('GET', url, f);
try {
request.send(null);
} catch (e) {
changeStatus(e);
}
};
function xmlParse(str) {
if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') {
var doc = new ActiveXObject('Microsoft.XMLDOM');
doc.loadXML(str);
return doc;
}
if (typeof DOMParser != 'undefined') {
return (new DOMParser()).parseFromString(str, 'text/xml');
}
return createElement('div', null);
}
function downloadScript(url) {
var script = document.createElement('script');
script.src = url;
document.body.appendChild(script);
}
我通过downloadUrl()调用它
请求文件的标题:
header('Access-Control: allow <*>');
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods: GET');
header('Access-Control-Allow-Headers: X-PINGOTHER');
header("Content-type: text/xml");
我真的尝试了所有方法,但它在 Firefox 中不起作用......
我注意到:通过在 facebook 选项卡中加载此应用程序时观察 firebug,我可以看到 facebook 没有请求源中给出的地址,但其他地址如:https://0-317.channel.facebook.com/pull?channel=p_1495135952&seq=389&partition=7&clientid=420773d2&cb=682&idle=0&state=active
我认为这肯定是 firefox 跨域策略...但是我该如何解决这个问题呢?
有人遇到过同样的问题吗?
提前谢谢你。
问候
【问题讨论】:
标签: ajax facebook xmlhttprequest