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

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

新規登録して質問してみよう
ただいま回答率
85.47%
ドメイン

ドメインとは本来、領域や範囲の意味を持ち、インターネット上では特定の部分領域を指します。ネットワークやコンピュータの識別に利用され、所得することでホームページを公開したり、メールアドレスを作成できます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1473閲覧

Rails リファラーヘッダーに自身のドメインを含めてHTTPリクエストを行う

lyzmfeqpxs54

総合スコア237

ドメイン

ドメインとは本来、領域や範囲の意味を持ち、インターネット上では特定の部分領域を指します。ネットワークやコンピュータの識別に利用され、所得することでホームページを公開したり、メールアドレスを作成できます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2020/09/09 04:02

いつもお世話になっております。

Railsでウェブページを作成しております。

vimeoに登録しているプライベート動画のサムネイルを自身のサイトに表示したいと考えています。
vimeoではhttps://vimeo.com/api/oembed.json?url=https://vimeo.com/xxxxxx/yyyyyyにアクセスすることでいろいろな情報がjsonで返ってくるのですが、動画公開を自身のドメインのみに制限するとサムネイル情報が返ってこなくなります。

いろいろと調べてみると、リファラーヘッダーに自身のドメインを含めるとサムネイルまできちんと返ってくると記事を見つけ、curlでの書き方は書いてありました。

これをrubyで書きたいのですが、ググっても分からずこちらに質問させていただきました。

curlでは以下のような表記 curl -e http://example.com https://vimeo.com/api/oembed.json?url=https:%2F%2Fvimeo.com%2F286898202 # 現在以下のような形で書いているがこの書き方だとサムネイルが取得できない # リファラーヘッダーに「http://example.com」を含めるような形で書きたい uri = URI.parse("https://vimeo.com/api/oembed.json?url=https://vimeo.com/xxxxxx/yyyyyy") json = Net::HTTP.get(uri) result = JSON.parse(json)

参考になるサイトでも構いませんので、適切な方法をご教示いただけますと幸いです。
よろしくお願いいたします。

環境
Amazon Linux release 2 (Karoo)
Rails 5.2.3
Ruby version: 2.6.1

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

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

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

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

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

guest

回答1

0

ベストアンサー

https://stackoverflow.com/questions/2986252/ruby-can-net-http-make-a-get-and-post-request-simultaneously

こちらでheaderオプションの渡し方が書いてあるため、'Referer'の部分を該当のドメインに変更して試してみたらできそうです!

ruby

1uri = URI.parse('target_uri') 2 3http = Net::HTTP.new(uri.hostname, uri.port) 4req = Net::HTTP::Get.new(uri.request_uri, { 'Referer' => 'http://www.example.com/' }) 5response = http.request(req) 6 7response.body

こんな形で試してみてください!

投稿2020/09/09 08:19

編集2020/09/09 08:24
necocoa

総合スコア209

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

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

lyzmfeqpxs54

2020/09/10 01:08

ご回答ありがとうございます。 http.use_ssl = true という一文だけ追加で必要でしたが、ご教示いただいた方法で無事解決いたしました。 本当にありがとうございました。 下記に完成形を記述します。 uri = URI.parse('target_uri') http = Net::HTTP.new(uri.hostname, uri.port) req = Net::HTTP::Get.new(uri.request_uri, { 'Referer' => 'http://www.example.com/' }) http.use_ssl = true response = http.request(req) response.body
necocoa

2020/09/10 01:51

追加オプションが必要だったのですね、参考になりました。 完成形ありがとうございます!
asm

2020/09/10 02:46

http = Net::HTTP.new(uri.hostname, uri.port, use_ssl: true) にてnew時にオプションを設定できます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問