我正在尝试创建一个内部应用程序以将文件上传到Google Cloud。我不希望每个用户或该应用程序都登录,所以我使用的是服务帐户。我登录到服务帐户,一切正常,但是当我尝试上载时,出现此错误:ServiceException:401匿名调用者无权访问bucket的storage.objects.list
如您所见,我已使用服务帐户登录,并且我的帐户(无论服务还是个人)均有效
似乎 CORS 错误是网络领域的众所周知的问题。但是我有史以来第一次尝试了 flutter web,我遇到了严重的错误。
下面的代码在 iOS 设备上运行时在应用程序版本中运行良好,但是当我在 Chrome 上使用 beta 通道的网络调试测试相同的代码时,它遇到了 CORS 错误。
其他 stackoverflow 答案解释了如何使用其项目的服务器端文件解决 CORS 问题。但我完全不知道什么是服务器问题以及如何处理他们的答案。来自 Chrome 控制台的错误消息如下
[从源 'http://localhost:52700' 访问 XMLHttpRequest at 'https://kapi.kakao.com/v1/payment/ready' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。]
所以,我想要做的是仅使用 DART 代码解决上面的“Access-Control-Allow-Origin 标头”问题!下面的代码是我尝试仅使用 main.dart 解决这些问题的代码。
onPressed: () async {
var res =
await http.post('https://kapi.kakao.com/v1/payment/ready', encoding: Encoding.getByName('utf8'), headers: {
'Authorization': 'KakaoAK $_ADMIN_KEY',
HttpHeaders.authorizationHeader: 'KakaoAK $_ADMIN_KEY',
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "POST, GET, OPTIONS, PUT, DELETE, HEAD",
}, body: {
'cid': 'TC0ONETIME',
'partner_order_id': 'partner_order_id',
'partner_user_id': 'partner_user_id',
'item_name': 'cool_beer',
'quantity': '1',
'total_amount': '22222',
'vat_amount': …Run Code Online (Sandbox Code Playgroud) 出于调试目的,我在 Chrome 上使用“CORS Unblock”扩展,并且可以在没有任何 CORS 问题的情况下进行加载。
我有一个托管在使用 CanvasKit 渲染的 Firebase Hosting 上的 Flutter Web 项目,但我无法使其加载 Xano CDN 中托管的外部图像或加载 GooglePlaces API 结果(自动编译)。我阅读了许多其他解决方案(例如这个或这个或这个),但没有一个有效。我还在Google Cloud 上配置了 CORS。
这是我的firebase.json文件:
{
"hosting": {
"public": "build/web",
"ignore": [
"firebase.json",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
],
"headers": [
{
"source": "*",
"headers": [
{
"key": "Access-Control-Allow-Origin",
"value": "*"
}
]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
在 index.html 中,我在标签之前附加了以下脚本</body>:
<!-- Firebase -->
<script type="module">
// Import …Run Code Online (Sandbox Code Playgroud) ????????? 图像资源服务捕获异常 ?????????????????????????????? 解析图像编解码器时抛出以下 ImageCodecException:无法加载网络图像。图片网址:https : //cdn.sportmonks.com/images/soccer/leagues/5.png 试图从另一个域加载图片?在以下位置找到答案:https : //flutter.dev/docs/development/platform-integration/web-images
当我尝试演示 URL https://picsum.photos/250?image=9 时,它工作正常,但上面的 url 很好,所以可能是什么问题?
class ListRow extends StatelessWidget {
final String name;
final imageUrl;
const ListRow({Key key, this.name, this.imageUrl}) : super(key: key);
@override
Widget build(BuildContext context) {
return Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Container(
width: 18,
height: 18,
child: Image(
image: NetworkImage(
'https://cdn.sportmonks.com/images/soccer/leagues/5.png'),
),
),
SizedBox(width: 10),
Flexible(
child: new Text(
name,
style:
new TextStyle(fontWeight: FontWeight.bold, color: Colors.black),
),
),
],
);
} …Run Code Online (Sandbox Code Playgroud)