現状
Railsアプリケーション(本のSNS)で、deviseとomniauthでFacebookログイン機能を作っています。
Let's encryptでSSL証明書を発行し、サイト自体はhttps通信ができているのですが、楽天ブックスAPIから取得した画像URLと商品詳細ページURL、Facebookから取得したユーザープロフィール画像URLが、httpになっており、そのせいで「保護された通信」の表示がされない状態。
DBに、httpの画像パスが保存されている
利用API
楽天ブックス書籍検索API
https://webservice.rakuten.co.jp/api/booksbooksearch/
環境
Ruby 2.3.0
Rails 5.0.1
nginx 1.12.2
unicorn 5.3.1
アプローチ
2つある気がしています。
- 楽天APIとFaecbookAPIから画像・リンクを取得する際に、httpsのリンクを取得する
- nginxやunicornの設定でなんとかhttpsにできないか
1については、楽天APIで、
https://github.com/rakuten-ws/rws-ruby-sdk
Railsのgemを使って実装すると、以下のように20140222のURLでAPIを叩いてしまい、レスポンスの商品URLと画像URLが、httpで返ってきてしまいます。
https://app.rakuten.co.jp/services/api/IchibaItem/Search/20140222
最新の仕様(ver.20170404)では、httpsで返すようになっているようですが、gemが対応していない?と思うので、ここはどうしようもない気がしています。(もし何か手があればご教授ください)
https://webservice.rakuten.co.jp/api/booksbooksearch/
2については、色々調べてみたのですが、解決策を見つけられずにいます。
このあたりを試しました。
https://qiita.com/ywatai@github/items/a179186a458a42b3c7f0
http://fujiyasu.hatenablog.com/entry/2016/06/30/094348
個人的には、1が本質的な気がしますが、現状難しそうな気がするので、2でなんとかしたいと思っています。
アドバイスいただけると助かります。よろしくお願いします。
情報不足しておりましたら、ご指摘いただければ追記いたします。
(参考)ソースコード
/etc/nginx/conf.d/rails.conf
server { listen 80; server_name myapp.com; return 301 https://myapp.com; } server { listen 443 ssl http2; server_name myapp.com; ssl_certificate /etc/letsencrypt/live/myapp.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/myapp.com/privkey.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers AESGCM:HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; root /home/me/myapp/public; client_max_body_size 100m; error_page 404 /404.html; error_page 500 502 503 504 /500.html; try_files $uri/index.html $uri @unicorn; location @unicorn { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto https; proxy_pass http://unicorn; proxy_redirect http:// https://; } }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/03 08:40
2018/01/06 15:11
2018/01/07 23:01