Если я использую элемент управления .NET WebBrowser и динамически заполняю содержимое HTML, JS, каковы именно правила для междоменных запросов AJAX? Я знаю, что технически у меня нет домена, поскольку это локальный контент, но я не уверен, как браузер справляется с этим.
Каковы правила междоменных запросов AJAX для динамического локального контента?
Ответы (2)
Прежде всего, убедитесь, что вы знаете, что делаете, и знаете о возможности XSS-атак, прежде чем делать это. Однако можно использовать междоменный AJAX с тегами <script>
с некоторыми модификациями на стороне сервера, например, я использовал это:
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)
Чтобы функция могла получить доступ к данным.
Я знаю, что технически у меня нет домена, так как это локальный контент, но я не уверен, как браузер обрабатывает это.
Тогда ваш «домен» будет «localhost», «0.0». .0.0», «127.0.0.1» или любой другой адрес, который вы ввели в браузере. Применяются те же правила, что и для любого «настоящего» домена: никаких запросов к другим доменам (за некоторыми незначительными исключениями).
Нет ничего специфичного для .NET, насколько я знаю.