Для отладки при запуске java добавьте, как указано:
-Djavax.net.debug=ssl
, после чего вы можете увидеть, что браузер пытался использовать TLSv1, а Jetty 9.1.3 говорил TLSv1.2, чтобы они не обменивались данными. Это Firefox. Chrome хотел SSLv3, поэтому я добавил это также.
sslContextFactory.setIncludeProtocols( "TLSv1", "SSLv3" ); <-- Fix
sslContextFactory.setRenegotiationAllowed(true); <-- added don't know if helps anything.
Я не использовал большинство других вещей, которые сделал плакат оригинала:
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] {
или этот ответ:
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory
.getDefaultAlgorithm());
или
.setEnabledCipherSuites
Я создал один самоподписанный сертификат следующим образом: (но я добавил .jks к имени файла) и прочитал это в моем java-коде Jetty. http://www.eclipse.org/jetty/documentation/current/configuring-ssl.html
keytool -keystore keystore.jks -alias jetty -genkey -keyalg RSA
first & amp; lastname * .mywebdomain.com
Вот "старый школьный" способ сделать его, который, надо надеяться, работает через все браузеры. В теории Вы использовали бы setAttribute
, к сожалению, IE6 последовательно не поддерживает ее.
var cssId = 'myCss'; // you could encode the css path itself to generate id..
if (!document.getElementById(cssId))
{
var head = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
link.id = cssId;
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = 'http://website.com/css/stylesheet.css';
link.media = 'all';
head.appendChild(link);
}
Этот пример проверяет, был ли CSS уже добавлен так, он добавляет его только однажды.
Помещенный, что код в файл JavaScript, имейте конечного пользователя, просто включают JavaScript и удостоверяются, что путь CSS является полным, таким образом, он загружается из Ваших серверов.
Здесь является примером, который использует плоскость JavaScript для введения ссылки CSS в head
элемент на основе части имени файла URL:
<script type="text/javascript">
var file = location.pathname.split( "/" ).pop();
var link = document.createElement( "link" );
link.href = file.substr( 0, file.lastIndexOf( "." ) ) + ".css";
link.type = "text/css";
link.rel = "stylesheet";
link.media = "screen,print";
document.getElementsByTagName( "head" )[0].appendChild( link );
</script>
Вводят код непосредственно перед закрытием head
, тег и CSS будут загружены, прежде чем страница представляется. Используя внешний JavaScript (.js
) файл заставит Flash нестилизованного содержания ( FOUC) появляться.
Можно использовать для этого библиотека YUI или использовать этот статья для реализации
Библиотека YUI могла бы быть тем, что Вы ищете. Это также поддерживает перекрестную доменную загрузку.
при использовании jQuery, , этот плагин делает то же самое.
Я предполагаю что-то вроде этого, что сценарий сделал бы:
<script type="text/javascript" src="/js/styles.js"></script>
Этот файл JS содержит следующее утверждение:
if (!document.getElementById) document.write('<link rel="stylesheet" type="text/css" href="/css/versions4.css">');
адрес JavaScript и CSS должен был бы быть абсолютным, если они должны обратиться к Вашему сайту.
Много методов импорта CSS обсуждены в этом , "Говорят "нет" взломам CSS с переходящими методами" статья.
, Но "Используя JavaScript для динамичного добавления таблиц стилей Portlet CSS" статья упоминает также возможность CreateStyleSheet (собственный метод для IE):
<script type="text/javascript">
//<![CDATA[
if(document.createStyleSheet) {
document.createStyleSheet('http://server/stylesheet.css');
}
else {
var styles = "@import url(' http://server/stylesheet.css ');";
var newSS=document.createElement('link');
newSS.rel='stylesheet';
newSS.href='data:text/css,'+escape(styles);
document.getElementsByTagName("head")[0].appendChild(newSS);
}
//]]>