C#で記述されたASP.NetMVC3Webアプリケーションがあります。
JavaScriptを使用してWebページから非同期的に呼び出すことができるようにJson結果を返すように設計されたActionResultが1つあります。アクションは基本的に次のとおりです。
public ActionResult FindSomething(string search)
{
var result = GetSearchResult(search);
return Json(new { @Result = result }, JsonRequestBehavior.AllowGet);
}
次に、Webページの1つに、データを取得するためのJavaScript(JQueryを使用)があります。
ただし、私が試したいのは、このFindSomethingアクションへのアクセスを制限して、自分のWebサイトコードのみが結果にアクセスできるようにすることです。現状では、誰でもWebブラウザからこのアクションを呼び出すことができます。
これを行うためのいくつかのオプションに関するアイデアはありますか?
このウェブサイトへのログインはないため、その方法で認証を行うことはできないことに注意してください。そして、私はパスワードアプローチに関連するhtmlソースコードに何も入れたくありません。
なぜ私はこれが欲しいのですか:
このFindSomething
メソッドは、実際には、クレジットを使用して支払われるサードパーティのサービスを呼び出します。したがって、実際には、呼び出しの数が多いほど、コストが高くなります。
私の懸念は、誰かがこのURLを知っていて、同じサービスを使用したい場合、彼らは私たちのURLでそれを照会し、料金を回避できることです。
このサードパーティのサービスがこれを考慮しているかどうかはわかりませんが、サービスと対話するためのいくつかの方法を提供しています。1つはサーバーコード(私が行っている)を介して呼び出すことができるWebサービスを介して、もう1つはいくつかのインラインJavaScript参照を介して-後者はhtmlソースにハードコードされたライセンスキーを必要とします:S
...答えを求める価値があるかもしれませんが、サービスのこの欠陥をどのように回避するかに関係なく、SOで興味深い質問があります。