我正在使用flutter-web和.net webapi。为了提交我的请求,我尝试了Dio和Dart HTTP包。由于CORS问题,两者都没有起作用。请告诉我我做错了什么?有没有解决此问题的方法?
当使用postman进行测试时,API没有任何问题。
示例代码:
我在webapi中添加了
当使用postman进行测试时,API没有任何问题。
示例代码:
我在webapi中添加了
var cors = new EnableCorsAttribute("", "", "*"); config.EnableCors();
。Flutter HTTP请求是基于dio构建的。Dio dio= new Dio();
Future postData2(user) async{
debugPrint(user.toString());
dynamic data = {
'phone_number': user['country_code'] + user['phone_number'],
'password':user['password']
};
final String pathUrl = "http://localhost:62435/api/Token/GetToken";
var response = await dio.post(pathUrl, data:data, options: Options(
headers: {
'content-type': 'application/json',
'Access-Control-Allow-Origin':'true'
},
));
return response.data;
}
//Http : dart
Future postData(user) async{
dynamic data = {
'phone_number': user['country_code'] + user['phone_number'],
'password':user['password']
};
final String pathUrl = "http://localhost:62435/api/Token/GetToken";
dynamic response = _http.post(
pathUrl,
body : data,
headers : {
HttpHeaders.contentTypeHeader : 'application/json',
//'Access-Control-Allow-Origin':'true'
}
);
debugPrint( //response.statusCode +
" " + response.data.toString());
}
对于 Dio 来说,至少检查请求已经发送。
使用 Dio 我遇到了以下错误:
Dio 请求标头在网络选项卡中。请求仍处于挂起状态,无法完成。
Request URL: http://localhost:62435/api/Token/GetToken
Referrer Policy: no-referrer-when-downgrade
Provisional headers are shown
Access-Control-Allow-Origin: true
content-type: application/json; charset=utf-8
Referer: http://localhost:63440/
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
{phone_number: "123124", password: "safaSF"}
http://localhost:59789
添加为允许的来源之一。但通常情况下,在 Postman 中进行测试时,这将起作用,因为它不是来自另一个 web 域。为了测试目的,在服务器端可以使用*
允许所有域。如果您提供所使用的服务器,我们可以找到如何为该服务器进行配置的方法。 - Abhilash Chandran