Flutter:(ASP.NET)Web API:无效的标题字段名称

时间:2018-03-08 01:34:14

标签: asp.net-web-api2 flutter

我是Flutter的新手,我正在尝试调用我的ASP.NET服务器Web API。

从我服务器上的日志中,一切正常,但Android Studio会抛出异常:"无效的标题字段名称"。

以下是dart中的代码:

import 'package:http/http.dart' as http;
...

_getService()  async {
  String result;
  try {
    var url = 'http://192.168.1.14:34263/api/Mobile/test/1';
    Future<http.Response> response = http.get( url );
    result = response.toString();
  } catch(exception){
    result = exception.toString();
    debugPrint(result);
  }
...
}

以下是响应标头(通过Chrome获取):

Access-Control-Allow-Headers:accept, authorization, Content-Type
Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, PATCH, DELETE
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: WWW-Authenticate
Cache-Control: no-cache
Content-Encoding: deflate
Content-Length:79
Content-Type: application/xml; charset=utf-8
Date: Thu, 08 Mar 2018 01:01:25 GMT
Expires:-1
Pragma:no-cache

Server:MyTestServer
X-Content-Type-Options:NOSNIFF
X-Permitted-Cross-Domain-Policies:master-only
X-SourceFiles:=?UTF-8?BDpcTXlJbmNyZWRpYmxlRHJlc3NpbmdcTXlJbmNyZWRpYmxlRHJlc3NpbmdcTXlJbmNyZWRpYmxlRHJlc3NpbmdcYXBpXE1vYmlsZVxjb3Vjb3VcMQ==?=
X-XSS-Protection:1;mode=block

以下是回答的答案:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">test</string>

谁能告诉我我做错了什么?

非常感谢

2 个答案:

答案 0 :(得分:1)

好的,我终于通过调试代码找到了。

实际上,我的服务器在响应的标题中添加了一系列字段名称(通过Web.config),其中一个字段名称的最后一个字符是空格。 因此,http_parser.dart引发了一个异常,因为空格在标题字段名称中没有授权字符。

Chrome(或任何浏览器)和Postman都没有检测到任何内容。

答案 1 :(得分:0)

我有类似的问题,并且经过大量调试之后

我从nginx中删除了这些标题:

#add_header X−Content−Type−Options nosniff;

#add_header X−Frame−Options SAMEORIGIN;

#add_header X−XSS−Protection 1;

,效果很好。所以最有可能是后端-标头相关问题