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



All times are UTC + 9 hours

新しいトピックを投稿する トピックへ返信する  [ 5 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2022年2月28日(月) 13:55 
環境は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日(月) 14:25 
ご参考までに、該当箇所の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

_________________
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0


通報する
ページトップ
  
引用付きで返信する  
投稿記事Posted: 2022年2月28日(月) 16:06 
たびたびで申し訳ありませんが、追記です。
サーバー側のソースは135000となってる部分を130000くらいにするとFireFoxで受け取れるようになります。

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


通報する
ページトップ
  
引用付きで返信する  
投稿記事Posted: 2022年2月28日(月) 21:07 
オフライン

登録日時: 2014年2月22日(土) 00:59
記事: 3673
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 での話であれば、その関連の技術フォーラム?などで相談されたほうがいいと思います。
問題を理解するには再現確認を行わないといけませんが、「ご参考」程度の断片では第三者がそれを行うのは困難です。
そもそも開発環境も一から用意する必要があります。

_________________
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2022年3月01日(火) 09:35 
EarlgreyTeaさん、ありがとうございます。

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

この件についてはBlazorのサポートに聞いてみます。
ありがとうございました。


通報する
ページトップ
  
引用付きで返信する  
期間内表示:  ソート  
新しいトピックを投稿する トピックへ返信する  [ 5 件の記事 ] 

All times are UTC + 9 hours


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[52人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

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