-
-
Save preinpost/941efd33dff90d9f8c7a208da40c18a9 to your computer and use it in GitHub Desktop.
// 에러의 원인 | |
// 따로 User-Agent 값을 추가하지 않으면 기본값으로 `Dart/<version> (dart:io)` 가 들어갑니다. | |
// (https://api.flutter.dev/flutter/dart-io/HttpClient/userAgent.html) | |
// 이 값을 지우고 브라우저에서 사용하는 값으로 바꿔줍니다. | |
// (브라우저 값이 아니면 네이버에서 차단하는걸로 보입니다) | |
// 방법 1. (local? override) | |
// [home_screen.dart] | |
// headers에 useragent 추가 | |
... | |
child: Image.network( | |
webtoon.thumb, | |
headers: const {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",}, | |
), | |
... | |
// 방법 2. (global override) | |
// [main.dart] | |
class MyHttpOverrides extends HttpOverrides { | |
@override | |
HttpClient createHttpClient(SecurityContext? context) { | |
return super.createHttpClient(context) | |
..userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'; | |
} | |
} | |
void main() { | |
HttpOverrides.global = MyHttpOverrides(); | |
runApp(const App()); | |
} | |
class App extends StatelessWidget { | |
const App({Key? key}) : super(key: key); | |
@override | |
Widget build(BuildContext context) { | |
return MaterialApp( | |
home: HomeScreen(), | |
); | |
} | |
} |
두 번째 방법은 넣는법 알 것 같아서 해봤는데 이미지가 안나와요..
`import 'package:flutter/material.dart';
import 'package:toonflix/screens/home_screen.dart';
import 'package:toonflix/services/api_service.dart';
import 'dart:io';
class MyHttpOverrides extends HttpOverrides {
@OverRide
HttpClient createHttpClient(SecurityContext? context) {
return super.createHttpClient(context)
..userAgent =
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36';
}
}
void main() {
HttpOverrides.global = MyHttpOverrides();
runApp(const App());
}
class App extends StatelessWidget {
const App({Key? key}) : super(key: key);
@OverRide
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
`
두 번째 방법은 넣는법 알 것 같아서 해봤는데 이미지가 안나와요..
네이버 쪽에서 외부에서 이미지 들고가는거 막는 방법을 useragent 체크 외 방법을 추가 했을수도 있구요 이제는 오래된 코드라 제가 올린 방법이 유효하지 않을 수 있습니다 ㅠ
뭔가 갑자기 안되는 느낌...
첫번째 방법으로 해결했습니다. 복 받으실거예요! 👍
감사합니다!!
지금은 첫 번째 방법으로 안 되는 것 같아요. 제가 잘 못했는지 안 되는지 알 수가 없네요. 혹시 지금도 첫 번째 방법으로 되나요?
첫번째 방법은 안되고 두번째 방법으로 해결했습니다 감사합니다!!
첫번째 방법 됐습니다 감사합니다 ^^
ListView makeList(AsyncSnapshot<List<WebtoonModel>> snapshot) { return ListView.separated( separatorBuilder: (context, index) => const SizedBox( width: 40, ), scrollDirection: Axis.horizontal, itemCount: snapshot.data!.length, itemBuilder: (context, index) { print(index); var webtoon = snapshot.data![index]; return Column( children: [ Image.network( webtoon.thumb, headers: const {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",}, ), Text(webtoon.title), ], ); }, ); }
child 부터 마지막 , 까지 복사하셔서 붙여넣기하시는게 편하시지 않을까요?
7달전에 적은거라서 첫번째 방법이 안된다고 하시는분 있는거 같으니까 참고하세요