在 Dart 中使用 CORS 发出 HTTP POST 请求时获取 401
Getting a 401 when making a HTTP POST request using CORS in Dart
我正在尝试在 Dart 中构建一个小型网络应用程序。该应用调用 EasyPost Web 服务,如以下 curl 调用所示:
$ curl -X POST https://myuserid@api.easypost.com/v2/trackers
-d 'tracker[tracking_code]=EZ1000000001'
-d 'tracker[carrier]=FEDEX'
这是我尝试匹配此请求的 Dart 代码:
// Configuration parameters
var url = "https://myuserid@api.easypost.com/v2/trackers";
var data = {
'tracker[tracking_code]': '$packageNo',
'tracker[carrier]': 'FEDEX'
};
// Make the request
var request = new HttpRequest();
request
..open("POST", url, async: true)
..withCredentials = true
..onLoadEnd.listen((_) => print(request.responseText))
..send(data.toString());
当我在 WebStorm 中 运行 发出带有 CORS 错误的请求时代码失败:
POST https://api.easypost.com/v2/trackers 401 (Unauthorized)
XMLHttpRequest cannot load https://api.easypost.com/v2/trackers.
No 'Access-Control-Allow-Origin' header is present on the requested
resource. Origin 'http://localhost:63342' is therefore not allowed
access. The response had HTTP status code 401.
这不是应该自动处理的吗?还是我需要自己将这些 headers 添加到请求中?
headers需要服务器端加上,否则客户端不会发起请求。对于 POST
请求,浏览器会发出预检请求以检查 CORS headers。如果服务器没有添加它们,浏览器就不会发出实际的 POST
请求。
如果服务器不添加这些headers,则可能不打算以这种方式使用。
我正在尝试在 Dart 中构建一个小型网络应用程序。该应用调用 EasyPost Web 服务,如以下 curl 调用所示:
$ curl -X POST https://myuserid@api.easypost.com/v2/trackers
-d 'tracker[tracking_code]=EZ1000000001'
-d 'tracker[carrier]=FEDEX'
这是我尝试匹配此请求的 Dart 代码:
// Configuration parameters
var url = "https://myuserid@api.easypost.com/v2/trackers";
var data = {
'tracker[tracking_code]': '$packageNo',
'tracker[carrier]': 'FEDEX'
};
// Make the request
var request = new HttpRequest();
request
..open("POST", url, async: true)
..withCredentials = true
..onLoadEnd.listen((_) => print(request.responseText))
..send(data.toString());
当我在 WebStorm 中 运行 发出带有 CORS 错误的请求时代码失败:
POST https://api.easypost.com/v2/trackers 401 (Unauthorized)
XMLHttpRequest cannot load https://api.easypost.com/v2/trackers.
No 'Access-Control-Allow-Origin' header is present on the requested
resource. Origin 'http://localhost:63342' is therefore not allowed
access. The response had HTTP status code 401.
这不是应该自动处理的吗?还是我需要自己将这些 headers 添加到请求中?
headers需要服务器端加上,否则客户端不会发起请求。对于 POST
请求,浏览器会发出预检请求以检查 CORS headers。如果服务器没有添加它们,浏览器就不会发出实际的 POST
请求。
如果服务器不添加这些headers,则可能不打算以这种方式使用。