Javascript 跨子域请求

Javascript 跨子域请求,javascript,oracle,asp-classic,xmlhttprequest,Javascript,Oracle,Asp Classic,Xmlhttprequest,我需要跨子域请求。有一个经典的asp站点,它创建了一个到我的PL/SQL Oracle网页的XMLHttpRequest asp站点的域为:test/site.asp,PL/SQL网页的域为:7779/site。。。所以顶级域是相同的 这是我的XmlHttpRequest: var xmlHttp = null; xmlHttp = new XMLHttpRequest(); xmlHttp.onload = function() { if (xmlHttp.readyState ===

我需要跨子域请求。有一个经典的asp站点,它创建了一个到我的PL/SQL Oracle网页的XMLHttpRequest

asp站点的域为:test/site.asp,PL/SQL网页的域为:7779/site。。。所以顶级域是相同的

这是我的XmlHttpRequest:

var xmlHttp = null;
xmlHttp = new XMLHttpRequest();
xmlHttp.onload = function() {
    if (xmlHttp.readyState === 4) {
        if (xmlHttp.status === 200) {
            createChart(divID, xmlHttp.responseText, counter);
        } else {
            console.error("error");
        }
    } 
};

xmlHttp.open( "GET", theUrl);
xmlHttp.setRequestHeader( "pragma", "no-cache" );
xmlHttp.send( null );
IE11中没有错误,但在Chrome中:

XMLHttpRequest cannot load http://test:7779/site No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://test' is therefore not allowed access. The response had HTTP status code 501. 是否有跨子域请求的解决方案?也许在我的asp站点中使用iframe来获取内容

更新:


我知道您试图将双方的document.domain设置为相同的:test。但是这也没有解决问题。

我的建议是,为什么不使用MSXML2.ServerXMLHTTP对象,因为您手头有经典的ASP?所以XMLHttp请求将从服务器发送到服务器,而不是从浏览器发送

你可以这样使用它

Dim xmlhttp
  Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
  xmlhttp.setTimeouts 30,500,1000,1000
  xmlhttp.Open "GET", "http://yourlink" & time, false
  On Error Resume Next
  xmlhttp.Send
  If Err.Number Then
    getBBstatus = "Could Not Retrieve Data"
    Err.Clear
  Else
    getBBstatus = xmlhttp.ResponseText
   ' Do something with the response here
  End If
  On Error Goto 0
  Set xmlhttp = nothing

希望能有所帮助,谢谢。

顶级域与在不同端口上运行的域不同,实际上是在顶级域上运行的http://test:80 和http://test:7779 还有一种技术也被用来劫持页面,即插入一个标签,将数据作为javascript脚本加载。但是,您必须修改响应,使其表现为类似于pjax的javascript代码/函数。注意:这些技术也被用于劫持网站1中的JSON响应。停止设置自定义请求标头。这将强制执行飞行前请求。或2。让服务器在response@Lankymart在不同的端口上运行意味着从请求的角度来看,它们在完全不同的域上运行?@ZerOne请看,我现在尝试使用此方法,但我想请求的是,此页面检查cookies设置是否插入。这似乎失败了,因为它将我转发到登录页面。有没有办法防止这种情况发生?也就是说,你想请求你的子域只是为了检查用户是否已登录?没有,我想获取一些数据。但此数据仅在用户登录时可用。此请求的登录似乎失败,仅供参考:请求的页面检查用户是否通过指定的Cookie登录。在这种情况下,您需要一个单独的页面,该页面不会检查身份验证并用数据响应,或者您可以在每次请求数据时提交登录凭据,该页面将检查凭据并验证请求。在这两种情况下,都必须更改目标页面。