我多年来一直在使用C#.NET,PHP和Javascript / Jquery开发,但我从来没有处理过代理服务器,因此我可能会尽可能多地进行研究,我认为我是在这里遗漏了一些基本概念。
一位同事创建了一个C#.NET应用程序,该应用程序将HTTP请求发送到返回XML文本字符串的服务器上的第三方应用程序。我试图用JavaScript和XMLHttpRequest对象复制该行为。我被告知我需要使用代理服务器来避免跨域问题。
我在开发PC上运行TinyWeb服务器。我安装了node.js,使用以下代码运行一个非常简单的代理服务器:
var http = require('http'),
httpProxy = require('http-proxy');
httpProxy.createProxyServer({target:'http://192.n.n.n'}).listen(8022);
端口8022只是我选择的号码,它不一定是该端口。如果我将浏览器指向localhost:8022,我会看到远程服务器上托管的页面,我希望看到的页面。
我正在构建一个测试页面test.html。到目前为止,该代码是:
var url="http://www.localhost:8022";
var UserName="username";
var PassWord="12345678";
var objHTTP = null;
if (window.XMLHttpRequest) {
objHTTP = new XMLHttpRequest();
if ( typeof objHTTP.overrideMimeType != 'undefined') {
objHTTP.overrideMimeType('text/xml');
}
}
objHTTP.open("POST", url + "/app.xml", false, UserName, PassWord);
objHTTP.setRequestHeader("Content-Type", "text/xml" ) ;
objHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
objHTTP.send();
我现在甚至不想让它做任何事情,我只想向自己证明我可以成功建立联系。但是当我去localhost / test.html时,Firebug告诉我:
NS_ERROR_DOM_BAD_URI: Access to restricted URI denied
objHTTP.send();
执行在.send()处停止。显示在其正上方的线上的警报()。紧随其后的行上的警报()。
我已经能够在几个测试环境中使用代理,因此我不确定代理是否是我的问题,但我不知道如何证明这样或那样的。我承认,我需要在整个过程中接受一些教育。