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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby on Rails

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

JavaScript

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

Ajax

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

Q&A

解決済

3回答

2248閲覧

RailsのJavaScript内で、ユーザーから隠蔽された関数を呼びたい

yuya0120117117

総合スコア16

Ruby on Rails

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

JavaScript

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

Ajax

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

0グッド

0クリップ

投稿2014/11/22 01:54

RailsのJavaScript内で、ユーザーから隠蔽された関数を呼びたいです。
経緯は、RailsでFroala editorを使おうと思いDLしました。それで、画像ファイルをAjaxでS3に保存するために、Froala editorのオプションで以下のように指定しました。
https://editor.froala.com/options#imageUploadToS3
より

lang

1$(".selector").editable({imageUploadToS3: { 2 bucket: 'editor', 3 region: 's3', 4 keyStart: 'uploads/', 5 callback: function (url, key) { 6 // The URL and Key returned from Amazon. 7 console.log (url); 8 console.log (key); 9 }, 10 params: { 11 acl: 'public-read', // ACL according to Amazon Documentation. 12 AWSAccessKeyId: 'ACCESS_KEY', // Access Key from Amazon. 13 policy: 'POLICY_STRING', // Policy string computed in the backend. 14 signature: '', // Signature computed in the backend. 15 } 16 17}});

を直接viewのerbに記述しました。
この、params:のsignature:を指定するには、s3のシークレットキーが必要なのですが、直接このコード内に書いてしまうとユーザー側に知られてしまうので、なんとかしてサーバー側のコードにシークレットキーを記述して、ユーザーに知られないようにしたいです。

lang

1 2signature: function_name,

と書いたら、サーバー側のJSが実行されて、実行結果が返されるような感じにしたいです。
よろしくお願いします。

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

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

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

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

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

guest

回答3

0

サーバ側のJSと言っているのがよく分かりませんが、
実現したいことはサーバ側で保持しているS3シークレットキーを返すAPIを、JavaScriptからAjaxで呼び出すということでしょうか?

投稿2014/11/22 04:31

k.tada

総合スコア1679

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

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

k.tada

2014/11/22 04:46

Froalaという物を使ったことが無いので、そもそも認識が間違えているかもしれませんが、 例えば`ready()`内でAjaxでサーバ側のAPIにアクセスして、success時にimageUploadToS3オプションの指定をすればいいのではないでしょうか。
yuya0120117117

2014/11/22 06:24

 ちょっと勘違いしていたというか勉強不足だったんですが、s3のpolicyとsignatureは、ユーザーがファイルを選択する前でも作成可能なんですか?
guest

0

ベストアンサー

投稿2014/11/22 02:29

hello-world

総合スコア1342

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

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

yuya0120117117

2014/11/24 14:01

完全にこれでした。 ありがとうございます。 そもそも、'ユーザーから隠蔽された関数を呼びだす'なんてことしなくてもよかったんですね。
guest

0

 難しいと思います。

たとえば、↓このコードの場合、

lang

1document.addEventListener('DOMContentLoaded',function(){ 2 var a = Math.random(); 3})

 a の内容はコードに記述されていませんし、無名関数のクロージャの中にありますからグローバルから参照をすることもできませんので、一見 a の内容を知ることは誰にもできないように思えます。
ですが、実際には各ブラウザの開発ツールなどでステップ実行をすれば、変数の内容をウォッチすることができます。

ですから、

lang

1signature: function_name,

 のような書き方をできたとしても、ソースを読むだけのスキルがある人にはおそらく漏れてしまうと思います。

投稿2014/11/22 05:10

Lhankor_Mhy

総合スコア36140

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

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

yuya0120117117

2014/11/22 05:45

なるほど。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問