2016-07-19 10 views
1

私はControllersコントローラを持つMVC WebAPI 2プロジェクトを持っています。コールしようとしているメソッドはPOST(作成)です。そのメソッドを呼び出した参照先URLにはまだアクセスしておく必要があります。どのオブジェクトにアクセスしても、参照URLはオブジェクトに存在しないか、nullです。例えばURL ReferrerはWebApi 2 MVCプロジェクトでは利用できません

、私はHTTPContext参照し、以下の戻りnullを追加しました:

var thingythingthing = HttpContext.Current.Request.UrlReferrer; 

RequestオブジェクトがUrlReferrer性質を持っていません。

これは、同様にnullを返します:

HttpContext.Current.Request.ServerVariables["HTTP_REFERER"] 

私はメソッドへのリンクを生成し、コールの発信元からのアクセスをフィルタリングできるようにする必要があるので、私は、ヘッダーを変更することはできません。

私が見なければならない特定の場所、または代替として、それらがnullを返す理由は何ですか?

編集:GETメソッド(HttpContext.Current.Request.RequestContext.HttpContext.Request.UrlReferrer)用のソリューションはありますが、POSTメソッド用のソリューションはありません。

答えて

2

this answerを参照してください。基本的に、WebAPI要求は異なる種類の要求オブジェクトを使用します。あなたのためにUrlReferrerを提供する拡張メソッドを作成することができます。リンクの答えから:

public static string UrlReferrer(this HttpRequestMessage request) 
{ 
    return request.Headers.Referrer == null ? "unknown" : request.Headers.Referrer.AbsoluteUri; 
} 

次に、あなたのクライアントがAPI RequestReferrer Headerを設定する必要があります:

// Microsoft.AspNet.WebApi.Client 
client.DefaultRequestHeaders.Referrer = new Uri(url); 

そして今

まず、あなたはUrlReferrer()方法を提供することHttpRequestMessageを拡張することができます:

からアクセスできるリファラーデータが Web API Requestに含まれています0
Request.UrlReferrer(); 
+0

この場合、クライアントによってヘッダーを変更することはできませんので、私はこれを私の目的に使用できません。私は使用できる回避策がありますが、コールをリダイレクトするための中間ページが必要になります。私はそれに熱心ではない。また、私の質問編集を参照してください。 – MetalPhoenix

+0

Ah。キャリーオン! –

関連する問題