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