Это может или не может помочь кому-либо, но у меня была страница, на которой я не мог нормально попасть, независимо от того, какие трюки Css я пробовал, поэтому я написал JQuery-файл. Страница Center:
с уровнем масштабирования браузера, страница будет сдвигаться, если вы были на 100%, 125%, 150% и т. д.
Код ниже находится в файле JQuery с именем centerpage.js.
На моей странице мне пришлось ссылаться на JQuery и этот файл, чтобы он работал, хотя моя главная страница уже имела ссылку на JQuery.
<title>Home Page.</title>
<script src="Scripts/jquery-1.7.1.min.js"></script>
<script src="Scripts/centerpage.js"></script>
centerpage.js
:
// centering page element
function centerPage() {
// get body element
var body = document.body;
// if the body element exists
if (body != null) {
// get the clientWidth
var clientWidth = body.clientWidth;
// request data for centering
var windowWidth = document.documentElement.clientWidth;
var left = (windowWidth - bodyWidth) / 2;
// this is a hack, but it works for me a better method is to determine the
// scale but for now it works for my needs
if (left > 84) {
// the zoom level is most likely around 150 or higher
$('#MainBody').removeClass('body').addClass('body150');
} else if (left < 100) {
// the zoom level is most likely around 110 - 140
$('#MainBody').removeClass('body').addClass('body125');
}
}
}
// CONTROLLING EVENTS IN jQuery
$(document).ready(function() {
// center the page
centerPage();
});
Также, если вы хотите центрировать панель:
// centering panel
function centerPanel($panelControl) {
// if the panel control exists
if ($panelControl && $panelControl.length) {
// request data for centering
var windowWidth = document.documentElement.clientWidth;
var windowHeight = document.documentElement.clientHeight;
var panelHeight = $panelControl.height();
var panelWidth = $panelControl.width();
// centering
$panelControl.css({
'position': 'absolute',
'top': (windowHeight - panelHeight) / 2,
'left': (windowWidth - panelWidth) / 2
});
// only need force for IE6
$('#backgroundPanel').css('height', windowHeight);
}
}
На стороне клиента вы используете SSL_set_tlsext_host_name(ssl, servername)
перед началом соединения SSL.
На стороне сервера это немного сложнее:
SSL_CTX()
для каждого другого сертификата; SSL_CTX()
с помощью SSL_CTX_set_tlsext_servername_callback()
; SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name)
. Выделите правую SSL_CTX
, чтобы перейти с этим именем хоста, затем переключите объект SSL
на это SSL_CTX
с SSL_set_SSL_CTX()
. s_client.c
и s_server.c
файлы в каталоге apps/
исходного дистрибутива OpenSSL реализуют эту функцию, поэтому они являются хорошим ресурсом, чтобы увидеть, как это должно быть сделано.
SSL_CTX()
на каждый сертификат для каждого потока (и всегда обрабатывать те же объектыSSL
иSSL_CTX
из того же потока). Другой способ - установить обратные вызовы потоков сCRYPTO_set_id_callback()
иCRYPTO_set_locking_callback()
, и в этом случае OpenSSL сделает правильные вызовы для обратного вызова блокировки, чтобы сделатьSSL_set_SSL_CTX()
потокобезопасным. – caf 17 May 2014 в 08:42SSL_set_SSL_CTX
врожденно не защищен потоком? Похоже, что это влияет только на SSL-соединение, указанное в первом аргументе. – mat 25 July 2016 в 14:43