diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e4ebd8ffe..4a5cb769c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.11.3+12 + +* Don't quote the boundary header for `MultipartRequest`. This is more + compatible with server quirks. + +## 0.11.3+11 + +* Fix the SDK constraint to only include SDK versions that support importing + `dart:io` everywhere. + ## 0.11.3+10 * Stop using `dart:mirrors`. diff --git a/lib/src/multipart_request.dart b/lib/src/multipart_request.dart index 2d3b318c9d..7250def98f 100644 --- a/lib/src/multipart_request.dart +++ b/lib/src/multipart_request.dart @@ -83,7 +83,7 @@ class MultipartRequest extends BaseRequest { ByteStream finalize() { // TODO(nweiz): freeze fields and files var boundary = _boundaryString(); - headers['content-type'] = 'multipart/form-data; boundary="$boundary"'; + headers['content-type'] = 'multipart/form-data; boundary=$boundary'; super.finalize(); var controller = new StreamController>(sync: true); @@ -117,14 +117,19 @@ class MultipartRequest extends BaseRequest { return new ByteStream(controller.stream); } - /// All character codes that are valid in multipart boundaries. From - /// http://tools.ietf.org/html/rfc2046#section-5.1.1. + /// All character codes that are valid in multipart boundaries. This is the + /// intersection of the characters allowed in the `bcharsnospace` production + /// defined in [RFC 2046][] and those allowed in the `token` production + /// defined in [RFC 1521][]. + /// + /// [RFC 2046]: http://tools.ietf.org/html/rfc2046#section-5.1.1. + /// [RFC 1521]: https://tools.ietf.org/html/rfc1521#section-4 static const List _BOUNDARY_CHARACTERS = const [ - 39, 40, 41, 43, 95, 44, 45, 46, 47, 58, 61, 63, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122 + 39, 43, 95, 44, 45, 46, 58, 61, 63, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122 ]; /// Returns the header string for a field. The return value is guaranteed to diff --git a/pubspec.yaml b/pubspec.yaml index 8f419adbb6..b922a51742 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: http -version: 0.11.3+11 +version: 0.11.3+12 author: "Dart Team " homepage: https://github.com/dart-lang/http description: A composable, Future-based API for making HTTP requests.