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 验证来自自定义身份验证提供程序的 JWT 不记名令牌