使用XMLHttpRequest时权限被拒绝。打开跨浏览器访问

问题描述 投票:0回答:5

我正在尝试访问 XMLHTTPRequest.open 方法,我什至包含了 netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");

但它仍然不起作用。

我正在使用 javascript 和 HTML 来访问 WebService。

任何帮助都会很棒

代码

<html> <Head> <Title>Calling A WebService from HTML </Title> </Head>

<Body onload='GetDataFrmWS()'> <form name="Form1" id="Form1" runat="server" method="post"> <div id="DisplayData" > </div> <div id="Menu2"></div>

</form>

<script language='javascript'>

var objHttp; var objXmlDoc;

function GetDataFrmWS() { alert('I M Here'); var func = getDataFromWS();

}

function getDataFromWS() {

if(window.ActiveXObject) { try { objHttp = new ActiveXObject('Msxml2.XMLHTTP');

    }
 catch (ex)
 {
  objHttp = new ActiveXObject('Microsoft.XMLHTTP');
 }

} else if (window.XMLHttpRequest) { objHttp = new window.XMLHttpRequest(); netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); }

strEnvelope = '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' + '<soap:Body>' + ' <HelloWorld xmlns="http://tempuri.org/">' + ' <Dummy xsi:type="xsd:string">Hello</Dummy>'+ ' </HelloWorld>'+ '</soap:Body>' + '</soap:Envelope>' ;

var szUrl; szUrl = 'http://kamadhenu/Quoteme/GetCategories.asmx?op=HelloWorld'; objHttp.onreadystatechange = HandleResponse;

objHttp.open('POST', szUrl, true); objHttp.setRequestHeader('Content-Type', 'text/xml'); objHttp.setRequestHeader('SOAPAction','http://tempuri.org/HelloWorld'); objHttp.send(strEnvelope);

}

function HandleResponse() {
if (objHttp.readyState == 4) {

if (window.ActiveXObject) { objXmlDoc = new ActiveXObject("Microsoft.XMLDOM"); objXmlDoc.async="false"; objXmlDoc.loadXML(objHttp.responseText); var nodeSelect = objXmlDoc.getElementsByTagName("Menu1").item(0); var Menu2=objXmlDoc.getElementsByTagName("Menu2").item(0); document.getElementById('DisplayData').innerHTML=nodeSelect.text;
document.getElementById('Menu2').innerHTML=Menu2.text; } else { var Text=objHttp.responseText; var parser=new DOMParser(); objXmlDoc = parser.parseFromString(Text,'text/xml'); var Value=objXmlDoc.documentElement.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].nodeValue; var Menu2=objXmlDoc.documentElement.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0].nodeValue; var Menu3=objXmlDoc.documentElement.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[1].nodeValue; document.getElementById('DisplayData').innerHTML=Value;
document.getElementById('Menu2').innerHTML=Menu2; document.getElementById('Menu2').innerHTML+=Menu3; } }

}

</script> <input type='Button' Text='Click Me' onclick='GetDataFrmWS()' value="Click Me!"/> ° </Body> </HTML>

ajax xmlhttprequest
5个回答
2
投票

XML HTTPRequest 的浏览器独立代码

我使用以下代码创建 XML 对象。它旨在处理所有浏览器(尤其是 IE 和非 IE)

    }
 catch (ex)
 {
  objHttp = new ActiveXObject('Microsoft.XMLHTTP');
 }

附注您问题中的代码不可读。请格式化一下


1
投票

这里有一个非常简洁的例子

尝试创建您的 URL http://recpushdata.cyndigo.com/Jobs.asmx/InsertXML

PS。您的代码在 StackOverflow 中不可读。


1
投票

据我所知,XMLHTTP请求必须指向html页面同一子域上的页面以获得各种浏览器权限。

一个技巧是在同一服务器上以您的首选语言创建另一个页面,并使其通过服务器的网络处理请求。

示例:

从 HTML 页面向 mydomain.com/externalrequest.php?url=www.google.com 发出 ajax 请求 该页面将连接(fsock/cURL 等)到“url”并返回它


1
投票

如果您尝试使用 XHR 跨域,您可以查看 JSONP 方法。检查 JQuery 文档。

需要您接受 JSON 响应,但它确实可以跨域工作。


-3
投票

是否有任何免费的 WEBMAIL 客户端允许编写自定义过滤器,或者我必须为这个简单的任务申请?

母狗

© www.soinside.com 2019 - 2024. All rights reserved.