Flutter Web:如何发送不记名令牌?

Posted

技术标签:

【中文标题】Flutter Web:如何发送不记名令牌?【英文标题】:Flutter Web : How to send bearer token? 【发布时间】: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

【问题讨论】:

【参考方案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 中没有任何问题。我的问题只在网络上

以上是关于Flutter Web:如何发送不记名令牌?的主要内容,如果未能解决你的问题,请参考以下文章

不记名令牌如何在 Web API 2 中存储在服务器端?

Web API 验证来自自定义身份验证提供程序的 JWT 不记名令牌

如何使用节点请求发送不记名令牌和 x-www-form-urlencoded 数据

MVC和Web API在不同项目时如何存储不记名令牌

取回不记名令牌邮递员扑腾

如何在 MVC 4/Web Api 2 中实现不记名令牌认证