针对动态本地内容的跨域AJAX请求有哪些规则?

时间:2010-05-08 22:26:25

标签: .net javascript ajax cross-domain

如果我正在使用.NET WebBrowser控件,并且我动态填充HTML,JS内容,那么AJAX跨域请求的具体规则是什么?我知道我在技术上没有域名,因为它是本地内容,但我不确定浏览器如何处理它。

2 个答案:

答案 0 :(得分:1)

首先,在执行此操作之前,请确保您知道自己在做什么以及XSS攻击的可能性。可以使用带有<script>标签的跨域AJAX进行一些服务器端修改,例如我使用了这个:

var AjaxFunctId = 0
var DAjaxFuncts = {}
function CrossDomainAjax(URL, Query, Callback) {
    AjaxFunctId += 1
    var script = document.createElement('script')
    script.type = 'text/javascript'
    script.defer = true

    if (Query) Query = Query+'&'
    script.src = URL+'?'+Query+'Callback=DAjaxFuncts['+AjaxFunctId+']'
    var head = document.getElementsByTagName('head').item(0)
    head.appendChild(script)

    var Fn = DAjaxFuncts[AjaxFunctId] = function(Rtn) {
        Callback(Rtn)
        head.removeChild(script) // Clean up!
        delete DAjaxFuncts[Fn.id]
    }
    Fn.id = AjaxFunctId
}

e.g:

CrossDomainAjax('http://127.0.0.1/MyURL', 'myparam=myvalue&myparam2=myvalue2', MyFunction)

该函数中的Callback参数将Callback参数添加到本地服务器的请求中,因此您需要服务器输出:

CALLBACK ID(AJAX DATA)

这样函数就可以访问数据。

答案 1 :(得分:0)

我知道我在技术上没有域名,因为它是本地内容,但我不确定浏览器如何处理它。
然后您的“域名”将是“localhost”,“0.0.0.0”,“127.0.0.1”或您在浏览器中输入的任何内容。同样的规则适用于任何“真实”域:没有对其他域的请求(除少数例外) 没有特定于.NET的AFAIK。