2013-12-23 26 views

答えて

4

著書「プロASP.NET MVC 4第4版」FROM:

public class CustomActionAttribute : FilterAttribute, IActionFilter { 
    public void OnActionExecuting(ActionExecutingContext filterContext) { 
     if (filterContext.HttpContext.Request.IsLocal) { 
      filterContext.Result = new HttpNotFoundResult(); 
     } 
    } 

    public void OnActionExecuted(ActionExecutedContext filterContext) { 
     // not yet implemented 
    } 
} 
+0

私はあなたが思いますよこの例を必要に応じて動作させる方法を理解してください:) – opewix

+0

良い答えですが、私はそれをたくさん見ています。私は返された '404 Not Found'でいくつかの問題を抱えています。私は '403禁じられた'がより適切であると言うだろう。 – Stefan

+0

@Stefanあなたの質問に答えがあります:https://stackoverflow.com/questions/5649852/asp-net-web-service-i-would-like-to-return-error-403-forbidden – opewix

10

私はあなたのサイトのために地元のURLを持っている場合は、クロスオリジンリソース共有(CORS)ことは、あなたを助けると思います。あなたは公開アクションのための起源のリストとあなたの保護されたアクションのための地元の起源のみを適用することができます。

ローカル:

[EnableCors(Origins = new[] { "http://localhost", "http://sample.com" })] 
public class ValuesController : ApiController 
{ 
...... 
} 

と確保:たとえば

[EnableCors(origins: "http://localhost")] 
public class ValuesController : ApiController 
{ 
...... 
} 

あなたは次のリンクによって、より詳細な情報を見つけることができます。CORS support for ASP.NET Web APIScope Rules for [EnableCors]

+0

ありがとう提案。私はこのようにすることを考えなかったでしょう。 –

+0

これは、ブラウザからの呼び出しのみを防ぎませんか?開いているポートなどを想定して、オフマシンからのサーバー側のコールは引き続き許可されませんか? – user323774

+0

@ user323774 APIを使用したモバイルアプリを開発しましたが、cors属性(EnableCorsAttribute( "*"、 "*"、 "*");)を有効にする前にAPIにアクセスできませんでした – RredCat

関連する問題