問題タブ [http-accept-header]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Spring MVCは、ContentNegotiationManagerFactoryBeanでjsonのみ406を返します
http://localhost:8090/home/home/home2
「ホーム」としてサーブレットコンテキストに対して行われたリクエストに対して、JSON レスポンスのみを有効にしたい。
私が設定した構成は、受け入れヘッダーがない場合、デフォルトを「JSON」応答として返すことです。また、受け入れタイプを "application/json" に設定しようとしましたが、機能していません。
Spring MVC + JSON = 406 Not Acceptableでの解決策は、ContentNegotiationManagerFactoryBean クラスを試している間、Messageconverter の別のアプローチを使用することです。
web.xml は次のとおりです。
servlet-context.xml は次のとおりです。
Java コードは次のとおりです。
c# - Windows Phone 8 でカスタム Accept ヘッダーが機能しない
HttpClient (System.Net.Http.HttpClient) クラスを使用して Web サービスに文字列をポストするポータブル クラス ライブラリ (.NET 4.5 および Windows Phone 8.1 を対象とする) にクラスがあります。このサービスでは、リクエストにAcceptヘッダーを設定して、次のように API バージョンを指定する必要があります。
私はこのように私のクラスでこれを試しました:
また、Accept ヘッダーが無効であることを示す FormatException がスローされます。だから私はこのように設定してみます:
そして、それでも FormatException がスローされます。この回答を見つけて、次のTryAddWithoutValidation()
ような方法を試してみることにしました。
最後に、FormatException を受け取りません。post メソッドは、.NET 4.5 ユニット/統合テスト プロジェクト内から呼び出すと機能します。期待していたデータで 200 を返します。しかし、Windows Phone 8.1 (またはエミュレーター) から同じメソッドを呼び出すと、サービスは、要求で指定したバージョンが無効であることを通知する応答を返します。
Fiddler で Windows Phone エミュレーターからのトラフィックを表示して、実際の要求がどのように見えるかを確認する方法がわかりません。私の推測では、Accept ヘッダーは追加されません。ベテランの Windows Phone 開発者が、私が犯している明らかな間違いを認識できることを願っています...
spring - Spring Boot: 新しい Extension-AcceptHeader マッピングを追加
通常の Spring アプリケーション内には、次のものがあります。
だから私は次のようなことができます:
そして、次のように呼び出します。
Spring Boot でこれを行うとextends WebMvcConfigurationSupport
、すべての自動構成が妨げられます。
では、新しい Extension-Accept-Header マッピングを Spring Boot に簡単に登録するにはどうすればよいでしょうか?
rest - HTTP コンテンツ ネゴシエーションはエラー メッセージに適用されますか?
クライアントが application/xml の Accept ヘッダーを送信する場合、エラー メッセージ (500 など) の本文も xml にする必要がありますか? それとも、Accept ヘッダーは 200 レベルの応答にのみ適用されますか?
java - Acceptヘッダーに基づくJerseyエンドポイントの調停: Acceptヘッダーが指定されていない場合は?
次のような 2 つのエンドポイントがあるとします。
Accept
これは、クライアントが送信するヘッダーに基づいて呼び出されるメソッドを調停するのに非常にうまく機能します。
私が抱えている問題は、クライアントがAccept
ヘッダーを完全に見逃した場合、(何らかの理由で) 2 番目のメソッドが呼び出され、それを最初のメソッドにしたいということです。
さらに複雑な点があります。これは、Swagger ドキュメントに自動的にフィードされるということです。余分な MIME タイプをドキュメントに表示したくないので、(たとえば)*/*
最初に受け入れられたタイプに追加したくありません。方法。
(これは Dropwizard と Jersey 1.x を使用していますが、Jersey 2.x に基づいた解決策を聞くことにまだ興味があります。間もなくアップグレードされる可能性があります。)
c# - C# で MVC アプリケーションにローカリゼーションを実装するために必要な手順
MVC アプリケーションでリソース (.resx) メッセージのローカリゼーションを実装する必要がありますが、実装に失敗しています。
私が従っている手順を確認します。
1.ローカリゼーション プロジェクトを作成し、サポートする必要がある言語と同じ数のリソース (.resx) ファイルを追加します。選択したすべての言語で、表示するメッセージを追加します。Visual Studio の「アクセス修飾子」オプションで「パブリック」を選択します。必要な規則に従ってリソース ファイルに名前を付けることを確認してください。つまり、既定の言語の場合は MyResource.resx、フランス語のローカライズの場合は MyResource-fr.resx、ルーマニア語のローカライズの場合は MyResource.ro などです。
2. http 要求から Accept-Language http ヘッダーを検出して解析します。存在する場合は常に、「q」係数が最も高いものを選択します。何も存在しないか、すべての q 値が同じである場合は、受け入れられる最初の言語を選択します。
(更新: web.configに追加してもまったく同じことが行われるため、手作業は必要ないことを知りました(@ Zealousコメントを参照)。<globalization enableClientBasedCulture="true" culture="auto" uiCulture="auto"/>
3.アプリケーションコントローラーがベースコントローラーから継承するようにします(フィルターを介して行うこともできます)。これにより、Thread.CurrentThread.CurrentCultureおよびThread.CurrentThread.CurrentUICultureの参照が、最も優先度の高いものに従って、その場で作成された新しいインスタンスに変更されます。前のステップから抽出された、受け入れられた言語。
4.上記の手順で作成したローカリゼーション プロジェクトへの参照を、メッセージを参照する必要があるプロジェクトに追加します。メッセージを参照する場合は、表示したいメッセージをリソースのデフォルト ファイル名「ドット」で参照するだけです。この例では、MyResource.Welcome になります。
期待される結果: Accept-Language を 'fr' に設定して http リクエストを送信すると、"Bienvenue" を含む応答を受け取りますが、Accept-Language を 'en' に設定する (またはいくつかの言語を追加して q ファクターをいじる) と、 「いらっしゃいませ」と返事。
どういうわけか、私の回答は常にデフォルトのリソース ファイル (この場合は英語) を使用しています。
私は何が欠けているか、間違っていますか?
json - Illuminate\Http\Request を拡張すると Accept ヘッダーがクリアされる
クラスを拡張Illuminate\Http\Request
し、コントローラーに渡しています。
私のコントローラーでは、メソッドAccept: application/json
を使用して、リクエストにヘッダーがあるかどうかを確認します。$request->wantsJson()
基本Illuminate\Http\Request
クラスを使用すると問題なく動作しますが、拡張クラスを使用すると、Accept ヘッダーが null であると表示されます。
コントローラ
これは動作しません。代わりにMyRequest
そのインスタンスに置き換えると、機能しますIlluminate\Http\Request
。var_dump$request->header('Accept')
の場合、MyRequest を使用すると NULL になります。
http - HTTP Acceptヘッダーの「+」は何を意味しますか?
このレコードをどのように理解できますか:
つまり、この「+」記号は標準化されているのでしょうか (とにかく、仕様で見つけられませんでした)、それとも単なる慣例ですか?
ありがとう。
aws-api-gateway - Amazon AWS API Gateway の Accept ヘッダー パラメータに基づいて、さまざまな MIME タイプを返します
リクエストの HTTP Accept ヘッダーに基づいてさまざまなドキュメントを返すように Amazon AWS API Gateway をセットアップする方法を説明していただけますか?
2 つの例:
curl --request GET ' http://api.sample.com/v1/hello ' --header 'Accept: text/HTML'
/li>curl --request GET ' http://api.sample.com/v1/hello ' --header 'Accept: application/JSON'
/li>