Flutter如何设置PC端的UserAgent
在Flutter开发PC端应用时,如何自定义或修改UserAgent?目前使用的http或dio库发送请求时,默认的UserAgent显示为移动端标识,导致部分服务端接口返回异常。请问是否有全局配置方法,或者需要针对每个请求单独设置?最好能提供具体的代码示例。
2 回复
在Flutter中设置PC端UserAgent,使用package:http库时,可在请求头中添加User-Agent字段,值为PC浏览器标识字符串,例如:
headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
更多关于Flutter如何设置PC端的UserAgent的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中设置PC端UserAgent可以通过以下方法实现:
1. 对于WebView(flutter_inappwebview包)
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
InAppWebView(
initialUrlRequest: URLRequest(url: WebUri('https://example.com')),
initialSettings: InAppWebViewSettings(
// 设置PC端UserAgent
userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
),
)
2. 对于http请求(使用http或dio包)
使用dio:
import 'package:dio/dio.dart';
void fetchData() async {
Dio dio = Dio();
// 设置PC端UserAgent
dio.options.headers['User-Agent'] =
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36";
Response response = await dio.get('https://api.example.com/data');
}
使用http包:
import 'package:http/http.dart' as http;
void fetchData() async {
var headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
};
var response = await http.get(
Uri.parse('https://api.example.com/data'),
headers: headers,
);
}
3. 常用PC端UserAgent示例
- Windows Chrome:
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" - Windows Edge:
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59" - macOS Safari:
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15"
注意事项
- 确保UserAgent字符串格式正确
- 某些网站可能会检测并限制非标准UserAgent
- 在WebView中设置UserAgent可能会影响页面渲染
选择适合你使用场景的方法来设置PC端UserAgent即可。

