Можно ли отключить AJAX без полного отключения JavaScript? - PullRequest
11 голосов
/ 07 ноября 2008

Можно ли отключить AJAX без полного отключения JavaScript?

Ответы [ 8 ]

17 голосов
/ 07 ноября 2008

Если вы используете Firefox, вы можете сделать это с помощью GreaseMonkey. (https://addons.mozilla.org/en-US/firefox/addon/748)

GM - это структура для применения сценариев к некоторым или всем страницам, которые вы посещаете. У меня есть сценарии GM, которые отключают загрузку Google-Analytics (потому что они замедляют работу) и отключают отслеживание кликов Google на страницах результатов Google (потому что меня беспокоит, что они это делают).

Вот мой скрипт отключения Google-Click:

// ==UserScript==
// @name           Google Clk
// @namespace      googleclk
// @description    Disable Google click tracking
// @include        http://*google.com/*
// ==/UserScript==
// Override google's clk() function, which reports all clicks back to google
unsafeWindow.clk = function(url) {} // { alert(url); } // I use this to test.

Делая нечто подобное с XMLHttpRequest (и другими функциями), вы можете эффективно отключить их. Конечно, вы можете полностью взломать страницу, делая это, но вы уже знали это.

7 голосов
/ 07 ноября 2008

Вы можете заменить инструмент браузера, чтобы сделать AJAX (объект XMLHttpRequest) своим собственным, который ничего не делает.

XMLHttpRequest = function(){}
XMLHttpRequest.prototype = {
    open: function(){},
    send: function(){}
}

Убедитесь, что ваш код замены выполняется перед любым вызовом AJAX.

Это будет работать для любого браузера, который реализует AJAX через объект XMLHttpRequest, но не будет работать для IE. Для IE вам, возможно, придется перегружать функцию CreateObject () ...

5 голосов
/ 18 августа 2011

В IE это можно сделать с помощью: Сервис -> Свойства обозревателя -> Вкладка «Дополнительно» -> Прокрутите вниз до пункта «Безопасность» -> Снимите флажок «Включить собственную поддержку XMLHTTP».

http://msdn.microsoft.com/en-us/library/ms537505%28v=vs.85%29.aspx

4 голосов
/ 07 ноября 2008

AJAX - это просто использование функции XMLHttpRequest в Javascript. В зависимости от вашего браузера вы можете заблокировать доступ к этой функции через настройки безопасности. По крайней мере, в Firefox вы можете отключить его либо с помощью собственного расширения.

2 голосов
/ 06 августа 2009

Это поздний комментарий к вопросу, на который уже дан ответ, но для людей, пришедших из Google:

С расширением Tab Permissions для Firefox вы можете отключить JavaScript для конкретной вкладки (в отличие от глобально для всех вкладок) с помощью контекстного меню, вызываемого правой кнопкой мыши. Я настроил пункт меню «Разрешения», чтобы переключать «Перенаправление» и «JavaScript», поэтому, если я наткнусь на страницу с раздражающими обновлениями и AJAX, я могу быстро и легко отключить пропускную способность вкладки неправильной работы, не влияя на JavaScript на других моих открытых вкладках.

0 голосов
/ 07 ноября 2008

В дополнение к предложению Firefox, вы можете сделать это в IE как побочный эффект отключения ActiveX. Также в IE7 + вы должны отключить опцию «Native XMLHttpRequest».

0 голосов
/ 07 ноября 2008

Не более, чем вы можете отключить любую другую функцию - могут быть найдены некоторые клуджи или хаки, которые могут помешать или нарушить JavaScript, но мы надеемся, что не найдем таких уязвимостей.

Я возьму дикий удар в темноте и угадаю, что вы пытаетесь остановить Ajax в каком-либо вводе ненадежного пользователя? В этом случае лучше всего избегать чрезмерного указания параметров поиска, упоминая Ajax, а скорее искать «sanitize javascript», «user javascript safe» ... такого рода вещи.

0 голосов
/ 07 ноября 2008

Нет. AJAX - это просто частное использование javascript.

Если бы вы могли заблокировать обратный вызов конкретной функции на сервере, вы могли бы это сделать, но вам, вероятно, придется редактировать свой браузер.

Полагаю, вы хотите сделать это со стороны клиента ... Можете ли вы перечислить более конкретные цели? Каков ожидаемый результат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...