【问题标题】:Flutter Web : How to send bearer token?Flutter Web:如何发送不记名令牌?
【发布时间】:2021-08-05 04:32:06
【问题描述】:

我有一个接受不记名令牌 (jwt) 的 ASP.Net Core Web api,我在 Flutter 中使用 Android 模拟器发送这个令牌,这段代码没有任何问题:

final response = await get(url, headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
      'Authorization': 'Bearer $token',
    });

但是当我在 Chrome 浏览器中运行时,api 响应是:405 Method Not Allowed。

有什么问题?

更新

根据@anirudh 的评论,我已经在我的 web Api 中启用了 CROS,并且问题已经改变。现在响应是:204 No Content

【问题讨论】:

    标签: flutter flutter-web bearer-token


    【解决方案1】:

    使用http plugin

    并且执行 http.get 而不仅仅是 get

    import 'package:http/http.dart' as http;
    
    final response = await http.get(url, headers: {
          'Content-Type': 'application/json',
          'Accept': 'application/json',
          'Authorization': 'Bearer $token',
        });
    

    【讨论】:

    • 谢谢。我已经按照你写的代码更改了我的代码,但仅在 web 中仍然存在该错误
    • @mmsh 你能发送错误吗?或许到时候我可以帮你
    • @mmsh 405 据我所知是由于错误的请求而发生的。请尝试将get 更改为post。还要从this重新检查你的卷曲
    • 错误:XMLHttpRequest 错误。如果问题是 get 或 post 为什么我在 android 中使用完全相同的代码没有任何问题?
    • 非常感谢。我通过您发送并编写解决方案的链接解决了我的问题。如果你愿意,你可以写独奏,我接受它作为最后的独奏
    【解决方案2】:

    感谢@anirudh,我解决了我的问题

    首先定义一个变量:

    readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
    

    然后在我的 api 中的 ConfigureServices 中编写这些代码:

    services.AddCors(options =>
        {
            options.AddPolicy(name: MyAllowSpecificOrigins,
                builder =>
                    {
                        builder.WithOrigins("http://localhost") //Or my flutter web host
                            .AllowAnyMethod()
                            .AllowAnyHeader()
                            .SetIsOriginAllowed((host) => true);
                    });
        });
    

    Configure 中的这一行:

    app.UseCors(MyAllowSpecificOrigins);
    

    【讨论】:

    • 太棒了!看你自己做的:)
    【解决方案3】:
    String token = await Candidate().getToken();
    final response = await http.get(url, headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
      'Authorization': 'Bearer $token',
    });
    print('Token : ${token}');
    print(response);
    

    【讨论】:

    • thanx ,我有令牌,我在 android 中没有任何问题。我的问题只在网络上
    猜你喜欢
    • 2017-04-20
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2019-08-24
    • 2023-03-11
    • 2019-02-08
    相关资源
    最近更新 更多