Это означает, что указанная переменная не указана ни на что. Я мог бы сгенерировать это так:
SqlConnection connection = null;
connection.Open();
Это вызовет ошибку, потому что, пока я объявил переменную «connection
», она не указала ни на что. Когда я пытаюсь вызвать член «Open
», для его устранения нет ссылки, и он будет вызывать ошибку.
Чтобы избежать этой ошибки:
object == null
. Инструмент Resharper JetBrains определит каждое место в вашем коде, которое имеет возможность ошибки нулевой ссылки, позволяя вам ввести нулевую проверку. Эта ошибка является источником ошибок номер один, IMHO.
Вы не можете проверить его со стороны сервера, но вы можете использовать javascript для его обнаружения после загрузки страницы. Сравните top
и self
, если они не идентичны, вы находитесь в кадре.
Кроме того, некоторые современные браузеры относятся к заголовку X-FRAME-OPTIONS
, который может иметь два значения:
Пользователи включают Picasa Google, которые не могут быть встроены в кадр.
Браузеры, поддерживающие заголовок, с минимальной версией:
Для современных браузеров вы можете использовать CSP (Политика безопасности контента), которая является стандартом. Следующий заголовок предотвратит загрузку документа в кадр где угодно:
Content-Security-Policy: frame-ancestors 'none'
(IE 11 нуждается в префиксе X-
, хотя). Вы также можете изменить 'none'
на начало координат, на котором разрешено создание рамки, например ваш собственный сайт.
Чтобы покрыть старые браузеры, это лучше всего использовать вместе с ответом @ Maerlyn .
Или вы можете заблокировать определенный домен, если вы не против вашего контента в некоторых местах, но не хотите его на определенном сайте. Например, если offendingdomain.com
вставлял ваш контент, вы могли бы сделать это:
<script type="text/javascript">
if(document.referrer.indexOf("offendingdomain.com") != -1) {
window.location = "http://www.youtube.com/watch_popup?v=oHg5SJYRHA0";
}
</script>
Это проверит местоположение родительского документа и посмотрит, является ли это offendingdomain.com
, который встраивает ваш контент. Этот скрипт затем отправит этот iframe в известное видео youtube как наказание. По сути, они просто Рик-Роллинг сами.
Stackoverflow включает некоторые JS для тестирования (master.js
). Это его часть:
if(top!=self){
top.location.replace(document.location);
alert("For security reasons, framing is not allowed; click OK to remove the frames.")
}
Но имейте в виду, что JS можно отключить.
вы можете предотвратить загрузку своей страницы в iframe с помощью javascript
<script type="text/javascript">
if ( window.self !== window.top ) {
window.top.location.href=window.location.href;
}
</script>
этого кода изменения кода контейнера iframe вашей страницы на ваш адрес страницы и принудительного контейнера для показа вашей страницы.
sandbox
в iframe позволяет запретить такие кадрирующие экраны. Таким образом, этот способ не является защищенным способом предотвращения кадрирования, если ваша проблема связана с безопасностью.
– Frédéric
3 September 2015 в 13:21
Используйте javascript для проверки того, была ли она загружена в iframe, поместив следующий скрипт в конец вашего php-файла и перенаправляя страницу, отображающую предупреждение или уведомление о том, что ваша страница не должна загружаться с использованием iframe.
<script type="text/javascript">
if(top.location != window.location) {
window.location = '/error_iframe.php';
}
</script>