タグ

ブックマーク / blog.jxck.io (74)

  • mixed contents 対応を促進する CSP ディレクティブ | blog.jxck.io

    Intro HTTPS 移行の問題点の一つに、 mixed contents への対応がある。 逆に mixed contents の発生を恐れ、 HTTPS に移行できないサービスもあるだろう。 エントリでは mixed contents の正しい理解と、その検出や解消に利用できる可能性のある、 CSP の Upgrade-Insecure-Request および、 Block-All-Mixed-Contents を解説する。 mixed contents HTTPS で配信されたコンテンツが、サブリソースとして HTTP のコンテンツを含む場合、これを mixed contents という。 HTTPS は MITM に対する耐性があるが、 HTTP は MITM への耐性がないため、 mixed contents の状態ではサブリソースを起点にメインコンテンツへの改ざんが成立して

    mixed contents 対応を促進する CSP ディレクティブ | blog.jxck.io
    efcl
    efcl 2017/01/25
    mixed contentの検出方法、reportについて
  • Foreign Fetch による Micro Service Workers | blog.jxck.io

    Update Foreign Fetch は削除される方向で進んでいる。 別途エントリを上げたのでそちらを参照。 Foreign Fetch が削除されそうな理由と Cookie の double keying | blog.jxck.io Intro Service Worker に Foreign Fetch という機能が提案されている。 この機能があるとクロスオリジンへの fetch をフックできる Service Worker を、その対象オリジンから提供できるようになる。 一体どういう仕組みなのか、これによって何が可能になるのかについて、デモを交えて記す。 1st Party と 3rd Party 例えばこのブログであれば、筆者自身が Service Worker を登録することで、 Push などの機能を提供することができる。 ここではこれを、 1st Party の Ser

    Foreign Fetch による Micro Service Workers | blog.jxck.io
    efcl
    efcl 2016/12/16
    foreign-fetchについて。 3rd Party Service Worker
  • Node v7 で入った WHATWG URL 実装について | blog.jxck.io

    Intro Node v7.0.0 が公開され、今回のリリースで WHATWG URL の実装が Experimental として入った。 既に標準で含まれていた url module との違いや、 URL API などについて解説する。 WHATWG URL URL は非常によく使われる、 Web において重要なフォーマットの一つだ。 ものによっては一見シンプルに見えるかもしれないが、その仕様はそれなりに大きい。 しかし、これまで DOM/JS はこれをパースする専用の API を持っていなかったため、例えば <input type=text> に入力された URL 文字列のパースは、片手間な正規表現で行われることも少なくなかった。 同様に、動的生成されるクエリやハッシュなどを URL に含める場面でも、やはり文字列操作による構築が行われてきた。 片手間な正規表現や文字列処理が、 URL

    Node v7 で入った WHATWG URL 実装について | blog.jxck.io
    efcl
    efcl 2016/10/29
    Node.js v7で試験的に実装されたWHATWG URLについて
  • Web 標準化のフィードバックサイクルを円滑にする Origin Trials について | blog.jxck.io

    Intro ブラウザに追加される新しい機能に対して、 Vender Prefix の代替となる Origin Trials の導入が徐々に始まっている。 今回は、これまでの Vender Prefix の問題点と、代替として提案された Origin Trials のデザインや導入方法などについて記す。 Avoid Breaking the Web Web が壊れることは、避けねばならない。 Web に関する、特にブラウザが実装するような機能については、その仕様や実装を変更することにより、既存の資産の挙動が壊れることがある。 これを Breaking the Web といい、プロトコルにしても API にしても、標準化団体やブラウザベンダなどは、これを避けることを念頭に置いて作業を行っている。(セキュリティ的な理由など、例外は多く有る。) 一方で、新しく提案される仕様はフィードバックを集めな

    Web 標準化のフィードバックサイクルを円滑にする Origin Trials について | blog.jxck.io
    efcl
    efcl 2016/10/01
    特定のオリジンにだけ試験的な機能を使えるにする仕組みについて。 Chromeで最近やっているやつ
  • Fetch での Stream を用いたプログレス取得とキャンセル | blog.jxck.io

    Intro WHATWG が定義する Fetch API は、出たばかりの仕様では、途中でのキャンセルや、プログレスイベントの取得が含まれていなかった。 しかし、後の更新で fetch 結果の Response Body が WHATWG Stream API を実装することになったため、現在の仕様ではプログレスを取ることもキャンセルをすることも可能となっている。 今回は、こうした API のアップデートについて記す。 Update 最初の公開時には、以下のように書いていた。 「XHR ではできるが Fetch ではできない」ことが、仕様上は無くなったことを意味する。 しかし、現時点で仕様としてまだ出来ないことがあることが判明した。 Upload の Progress これに伴い、記事の一部を修正した。 Fetch 最新の Fetch の仕様は以下で確認できる。 Fetch Spec 仕様

    Fetch での Stream を用いたプログレス取得とキャンセル | blog.jxck.io
    efcl
    efcl 2016/07/23
    FetchというよりはStreamがキャンセルできる話。StreamはPromiseの連続性
  • Intersection Observer を用いた要素出現検出の最適化 | blog.jxck.io

    Intro スクロールによる DOM 要素の出現などを効率よく検知するため、新しく Intersection Observer という API が追加された。 この API の使い方と、サイトへの適用について記す。 要素交差(intersection)の検出 ページをスクロールしていく過程で、特定の DOM が画面に出現したことをフックしたいケースがある。 代表例は 画像の遅延読み込み であり、初期ロードでは画像の取得を行わずスクロールしていく過程で順次取得する手法である。 特に画像の多いページでは表示に必要なリソース取得のみに最適化でき、初期画面表示などでは効果が大きいとされる。 これを実装するのに必要なのは、「 <img> 要素が出現しているかどうか」であるが、質的には「画面外にあった <img> が viewport と交差したか」を取得することになる。 つまり、 要素出現の取得

    Intersection Observer を用いた要素出現検出の最適化 | blog.jxck.io
    efcl
    efcl 2016/06/29
    Intersection Observerの使い方や従来の方法との違いについて。 スクロール量や要素の表示に応じた処理
  • Passive Event Listeners によるスクロールの改善 | blog.jxck.io

    Intro DOM のイベントリスナの仕様に Passive Event Listeners というオプションが追加された。 このオプションは、主にモバイルなどでのスクロールの詰まり(Scroll Junk) を解決するために導入されたものである。 今回は、この仕様が解決する問題と、サイトへの適用を解説する。 Passive Event Listeners Spec Scroll Event の PreventDefault() 画面のスクロールに合わせたインタラクションを実装する場合、 Scroll Event にイベントリスナを登録する。 典型的な例では touchstart や touchend をフックし、その中で DOM の操作などを実施するなどがある。 場合によってはイベントリスナ内で preventDefault() を呼ぶことで、スクロールそのものを止めることもできる。

    Passive Event Listeners によるスクロールの改善 | blog.jxck.io
    efcl
    efcl 2016/06/10
    `addEventListener(type, handler, options)`の第三引数として追加されてた `passive`オプションについて。 `passive: true` とした場合の効果、Feature detectの方法についてなど
  • 画像最適化戦略 PNG/JEPG 編 | blog.jxck.io

    Intro サイトで使用している PNG/JPEG 画像に対し、メタデータ削除、減色、リサイズなど基的な最適化処理の適用戦略と、その方法および結果について。 画像最適化シリーズ第 1 回目のエントリである。 > 画像最適化戦略 PNG/JPEG 編 画像最適化戦略 Picture 編 画像最適化戦略 WebP 編 画像最適化戦略 SVG/Font 編 画像最適化戦略 Lazy Loading 編 サイズ最適化 画像において最も無駄なのは、サイズの大きい画像を小さく表示している場合である。 これはネットワークでの転送上も、ブラウザのレンダリング上もオーバーヘッドになる。 逆に小さい画像を拡大して描画すると、細部が荒れてしまう。 したがって、表示するサイズぴったりにリサイズすれば、データ量も最適となる。 また、見た目上の変化/劣化が生じなければ、減色や余計なメタ情報の削除などによって、サイ

    画像最適化戦略 PNG/JEPG 編 | blog.jxck.io
    efcl
    efcl 2016/05/18
    画像の種類ごとに最適化する話。 PNG/Picture/WebP/SVG
  • Resource Hints API でリソースの投機的取得 | blog.jxck.io

    Intro Resource Hints とは現在提案されている以下のドラフトであり、ブラウザに「次に必要となるリソースを教える」ことで、投機的な取得を行う API 群である。 https://w3c.github.io/resource-hints/ 主に以下がある。 dns-prefetch preconnect prefetch prerender 今回はサイトでこれを適用した話。 投機的なリソース取得 例えば、ログインページの次には、そのサービスのメインページに遷移する頻度が高い。 そして、メインページでは、以下のような追加のリソースが必要になるだろう。 追加の JS 追加の CSS 追加の Image 追加の API アクセス それぞれを DNS 解決 -> TCP 接続 -> リソースのフェッチ、と繰り返していくと、イニシャル表示は必然的に時間がかかる。 ところが、この遷移に

    Resource Hints API でリソースの投機的取得 | blog.jxck.io
    efcl
    efcl 2016/05/18
    Resource Hintsの先読みや解決について
  • 中級者向け Service Worker Tutorial | blog.jxck.io

    Intro Service Worker の初心者向けのチュートリアルや、使ってみた系のエントリも増えてきました。 しかし、 Service Worker は通常のブラウザ用 JS の開発と少し経路が違い、慣れるまで開発やデバッグもなかなか難しいと思います。 そこで特に難しい部分、そして分かっていないと実際にデプロイした際に難しいと思う部分について、実際に動きを確認しながら解説したいと思います。 なお、 Service Worker の基的な概念などについては、他のチュートリアルなどを見て理解している前提で進めます。 思いつきで撮ったので色々ミスも有ります、また Chrome Dev Tools の UI はどうせ変わるのでそのつもりで見てください。 TODO になっている動画は、そのうち撮って追加します。 List claim controllerchange updatefound

    中級者向け Service Worker Tutorial | blog.jxck.io
    efcl
    efcl 2016/04/26
    Service Workerを使って開発する際に出てくる問題や挙動について解説しているスクリーンキャスト。 Service Workerのライフサイクルについて。claim,skipWaiting
  • Stale-While-Revalidate ヘッダによるブラウザキャッシュの非同期更新 | blog.jxck.io

    Intro システムにおいてキャッシュの設計は永遠の課題であり、 Web のパフォーマンスにおいても非常に重要である。 Web では、 HTTP ヘッダを用いてブラウザやプロキシにキャッシュの制御を指定する。 Stale-While-Revalidate ヘッダは、このキャッシュ制御に選択肢を追加する新しい仕様である。 このヘッダの概要と、サイトへの適用を解説する。 Web におけるキャッシュ キャッシュの種類 まず、ブラウザが持つ従来のキャッシュの機構について整理する。 そもそも、キャッシュを行う意義は大きく二つある。 リソースの取得を高速化する サーバへの負荷を減らす これまでは HTTP ヘッダを用いて、キャッシュを管理させる方法を用いてきた。 Web における、キャッシュの指定には大きく二つの方式がある。 ブラウザはリクエストを発行せず、保持するキャッシュを使用する(Cache-

    Stale-While-Revalidate ヘッダによるブラウザキャッシュの非同期更新 | blog.jxck.io
    efcl
    efcl 2016/04/18
    Stale-While-Revalidate について
  • Content Security Policy(CSP) 対応と report-uri.io でのレポート収集 | blog.jxck.io

    Intro サイトにて Content Security Policy を有効化した。 まずは Report Only にて導入し、段階的にポリシーとコンテンツを修正していく方針をとる。 CSP Report については、 report-uri.io を用いて収集することにした。 導入に必要な設定や、注意点についてまとめる。 Content Security Policy Content Security Policy(CSP) とは、 Web におけるセキュリティを向上させる非常に強力な仕組みである。 Content Security Policy Level 2 draft-gondrom-websec-csp-header-00 - HTTP Header Content Security Policy 具体的には、コンテンツに対し Content-Security-Policy

    Content Security Policy(CSP) 対応と report-uri.io でのレポート収集 | blog.jxck.io
    efcl
    efcl 2016/04/04
    CSPを適応する場合のレポートについて
  • JSON-LD と Open Graph で構造化メタデータ対応 | blog.jxck.io

    Intro サイトのメタ情報を整理するため、 HTML のメタタグの整理、 JSON-LD による schema.org 対応、 Facebook, Twitter を主とした Open Graph 対応を実施した。 これにより、既に AMP 対応していたサイトが、 Google のモバイル検索でキャッシュの対象となる(クロール待ち)。 Meta Tag まず HTML の仕様に従い、基的なメタ情報を <meta> により定義した。 https://dev.w3.org/html5/spec-preview/the-meta-element.html 各要素は、テンプレート生成時に利用した値を埋め込んでいるため、 サイトの Atom RSS-feed などと同じ値である。 <meta name=author content=Jxck> <meta name=description

    JSON-LD と Open Graph で構造化メタデータ対応 | blog.jxck.io
    efcl
    efcl 2016/02/27
    JSON LDとSchema.org、og:
  • HTTP2 を前提とした HTML+CSS コンポーネントのレンダリングパス最適化について | blog.jxck.io

    Intro Chrome が予定している <link rel=stylesheet> の挙動の変更について、 Google Chrome チームの Jake が、興味深いブログを上げている。 The future of loading CSS この内容は、単に Chrome に対する変更だけではなく、 HTTP2 によって変化する最適化手法と、それを最も活かすための HTML, CSS の構成についてのヒントがある。 今回は、この内容を意訳+補足解説し、サイトに適用していく。 HTTP/1.1 時代の CSS HTML 自体がコンポーネントを意識した作りになっている場合は、自然と CSS も class などを使いコンポーネント単位に作ることができるだろう。 しかし、 HTTP/1.1 では、リクエストの数を減らすために全ての CSS を 1 つ(もしくは少数個)に結合する最適化が主流だ

    HTTP2 を前提とした HTML+CSS コンポーネントのレンダリングパス最適化について | blog.jxck.io
    efcl
    efcl 2016/02/15
    コンポーネントに必要なCSSを読み込みProgressive Renderingするというアプローチの話