質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

2157閲覧

HPKP(HTTP公開鍵ピンニング)を採用したサイトにAPI接続する方法

nekonyangon

総合スコア14

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2018/12/04 12:50

編集2018/12/04 12:54

#前提・実現したいこと

行政機関が公表しているAPI(XMLデータ)を利用して、特定のデータを取得・表示するwebアプリを作成しています。APIの公開は2017年6月であり、比較的新しいものです(2018年3月に仕様更新)。

取得・表示する機能はJavascript(ajax)で記述しており、アプリ画面上のボタンをクリックすると当該機能が発動するようになっています。

#発生している問題・エラーメッセージ

アプリ画面上のボタンを押しても何も表示されず、consoleには次のようなエラーメッセージが表示されます。

HTTP - Based Public Key Pinning is deprecated. Chrome 69 and later will ignore HPKP response headers.

#試したこと・調べたこと

下記の記事等を読んで、**「自分が接続したいAPIにはHPKP(HTTP公開鍵ピンニング)というセキュリティ方式が採用されているところ、Google ChromeがHPKPのサポートを2018年5月に終了したため、接続ができなくなった」**ということは理解できたのですが、解決策がわかりません。

セキュリティの問題ということで、アプリ側の常時SSL化もやってみたのですが、やはり同じエラーメッセージが表示されます。

【参考記事】

  • [グーグル、「Chrome 67」でHPKPのサポートを廃止へ

](https://japan.cnet.com/article/35109624/)

   

      

   

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

HPKPがなくても、通信自体は可能なはずです。

Developer ToolsのNetworkタブを見て、「通信できているけど受け取ったJavaScriptでのハンドリングに失敗している」のか「JavaScriptでの通信が失敗している」のか確認してください。「APIがCORS非対応で、ブラウザから通信できない」など、別な問題ということも考えられます。

投稿2018/12/04 22:32

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nekonyangon

2018/12/05 16:14

早速ありがとうございます! 他の方からいただいたアドバイスに従い、phpで中継プログラムを作成してみたところ、エラーメッセージは消え、通信自体はできようになったみたいです。 しかし、Developer ToolsのNetworkでは「Status Code: 200」となり、正常に情報が取得できているように見えるのですが、Consoleでは「XMLHttpRequest : 0」となり、エラー側の処理が実行されてしまします。 こちら別スレを立てさせていただきますので、もし解決法等お分かりになるようでしたら、ご指導いただけると大変幸甚です。。
guest

0

ベストアンサー

ChromeがHPKPを使った通信を廃止するのであれば、Ajax側だけでどうにかして対応することは出来ません。

Javascript
↓↑ [ここは非HPKPで通信]
自分のサーバ上の中継プログラム
↓↑ [ここはHPKPで通信]
API
の様な感じでAjaxとAPIとの通信を仲立ちしてあげるようなプログラムを設置してあげる必要があるでしょう。
(仕組みやプログラム自体は簡単ですが、セキュリティやAPI規約、サーバやネットワーク負荷その他諸々考慮する必要があるのでちゃんとやるとそれなりに大変です)

Remove HTTP-Based Public Key Pinning (removed)を読む限り、廃止間近ではあるもののまだ完全に廃止はされていないようですね。(開発版のChromeではすでに廃止されている様子)

投稿2018/12/04 13:44

tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nekonyangon

2018/12/05 16:10

早速ありがとうございます! phpで中継プログラムを作成してみたところ、エラーメッセージは消え、通信自体はできようになったみたいです。とても助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問