― MozillaZine.jp フォーラムは Mozilla 製品に関する情報交換の場です ―



All times are UTC + 9 hours

返信する
ユーザー名:
件名:
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: ON
BBCode を無効にする
フォントサイズ:
フォントカラー
スマイリーを無効にする
URL を自動的にパースしない
ユーザエージェントを表示する
認証コード
KCaptcha by Nikita_Sp
   

トピックのレビュー - POSTで128KB以上のJSONが受け取れない
作成者 メッセージ
  記事の件名:  Re: POSTで128KB以上のJSONが受け取れない  引用付きで返信する
EarlgreyTeaさん、ありがとうございます。

実際のところ、この事象がBlazorの固有現象なのかは判断ついていません。
なのでBlazorによらず、FireFoxで同様の事象をご存じの方がいないかお伺いしたいという意図でした。

この件についてはBlazorのサポートに聞いてみます。
ありがとうございました。
投稿記事 Posted: 2022年3月01日(火) 09:35
  記事の件名:  Re: POSTで128KB以上のJSONが受け取れない  引用付きで返信する
kee さん、EarlgreyTea と申します。

kee さんが書きました:
FireFoxからPOSTでWeb APIにアクセスしたとき、そのレスポンスとして返しているJSONがおよそ128KBを超えるサイズになるとFireFoxがレスポンスに反応せず、待ち受けた状態のままとなりました。

これがお困りの症状の概要ですね。
ですが、
kee さんが書きました:
クライアント側処理は.NET 6版のBlazor WebAssembly、Web APIは.NET 6で作成しています。
kee さんが書きました:
ご参考までに、該当箇所のBlazorのソースとリクエストヘッダーです。
これって、
①Blazor WebAssembly というフレームワークの Firefox サポートの話でしょうか、
②Firefox の WebAssembly サポートの話でしょうか、
③それとも Firefox の Web API 自体の話でしょうか。
そのあたりがさっぱりわからないのです。

問題の切り分けはできているでしょうか。
Blazor WebAssembly での話であれば、その関連の技術フォーラム?などで相談されたほうがいいと思います。
問題を理解するには再現確認を行わないといけませんが、「ご参考」程度の断片では第三者がそれを行うのは困難です。
そもそも開発環境も一から用意する必要があります。
投稿記事 Posted: 2022年2月28日(月) 21:07
  記事の件名:  Re: POSTで128KB以上のJSONが受け取れない  引用付きで返信する
たびたびで申し訳ありませんが、追記です。
サーバー側のソースは135000となってる部分を130000くらいにするとFireFoxで受け取れるようになります。

dynamic r = Ok(new Dictionary<string, string> { { "hoge", new String('a', 135000) + "z" } });
投稿記事 Posted: 2022年2月28日(月) 16:06
  記事の件名:  Re: POSTで128KB以上のJSONが受け取れない  引用付きで返信する
ご参考までに、該当箇所のBlazorのソースとリクエストヘッダーです。


クライアント側

@if (hoge is null)
{
<p><em>Loading...</em></p>
}
else
{
<h1>Http Response</h1>
<div>@hoge?.Length</div>
}

@code {
private WeatherForecast[]? forecasts;

private string? hoge = null;

protected override async Task OnInitializedAsync()
{
var repsonse = await Http.PostAsJsonAsync<string>("WeatherForecast", "");
var fuga = await repsonse.Content.ReadFromJsonAsync<Dictionary<string,string>>();

hoge = fuga is null ? "" : fuga["hoge"];
}
}

---------------------------------------------------------------

サーバー側

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
[HttpPost]
public async Task<IActionResult> Post()
{
await Task.Delay(1000);//無駄に1秒待たせる

dynamic r = Ok(new Dictionary<string, string> { { "hoge", new String('a', 135000) + "z" } });
return r;
}
}

---------------------------------------------------------------

リクエストヘッダー

POST /WeatherForecast HTTP/2
Host: localhost:44315
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
Accept: */*
Accept-Language: ja,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
Referer: https://localhost:44315/fetchdata
content-type: application/json; charset=utf-8
Origin: https://localhost:44315
Content-Length: 2
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
投稿記事 Posted: 2022年2月28日(月) 14:25
  記事の件名:  POSTで128KB以上のJSONが受け取れない  引用付きで返信する
環境はWindows10, FireFox 97.0.1です。
FireFoxからPOSTでWeb APIにアクセスしたとき、そのレスポンスとして返しているJSONがおよそ128KBを超えるサイズになるとFireFoxがレスポンスに反応せず、待ち受けた状態のままとなりました。
おそらく128KB付近でサイズに制約があると思われますが、これ以上のサイズを受け取れるような設定をすればよろしいでしょうか?

なお、それ以外の以下のブラウザーは大きなJSONでも問題なく受け取れることを確認しています。
・Windows版Chrome
・Windows版Edge
・Mac OS版Safari
・Chrome Book版Chrome

また、128KB以上のJSONでもGETの場合はレスポンスを受け取れることは確認しています。
ただし処理の関係でPOSTでアクセスしたい箇所であるため、POSTで回避する方法がないか、ご存じの方がいらっしゃったらご教示いただけると幸いです。

クライアント側処理は.NET 6版のBlazor WebAssembly、Web APIは.NET 6で作成しています。
投稿記事 Posted: 2022年2月28日(月) 13:55

All times are UTC + 9 hours


ページ移動:  
Powered by MozillaZine.jp® Forum Software © phpBB Group , Almsamim WYSIWYG
Japanese translation principally by ocean