gpt4 book ai didi

dart - HttpRequest(Web客户端)和HttpRequest(服务器):方法和contentType不交换

转载 作者:行者123 更新时间:2023-12-03 03:18:44 25 4
gpt4 key购买 nike

Dart中的HttpRequest(Web客户端)和HttpRequest(服务器)中的method和contentType参数不交换。

我有以下代码:

(网络客户端)



var url = "http://127.0.0.1:8087";
String jsonString = JSON.encode(dadosRegistro[id]);
HttpRequest.request(url, method: "DELETE", sendData: jsonString, mimeType: "application/json")
.then((HttpRequest resp) {
window.console.log(resp.response);
}).catchError(tratarErro);

(服务器)

HttpServer.bind('127.0.0.1', 8087).then((server) {
server.listen((HttpRequest request) {
print(request.method);
print(request.headers.contentType);
});

当Web客户端调用服务器时,结果如下:

OPTIONS
null

我的期望是:

DELETE
application/json

我做错什么了吗?

谢谢!

最佳答案

这是一个CORS问题。您正在接收的请求实际上是飞行前请求,由浏览器发送以验证服务器是否可以接收到实际请求。您可以在此处查看有关CORS的更多信息:http://www.html5rocks.com/en/tutorials/cors/

要查看预期结果,您可以更改服务器代码以处理飞行前请求:

 HttpServer.bind('127.0.0.1', 8087).then((server) {
server.listen((HttpRequest request) {
request.response.headers.add("Access-Control-Allow-Origin", "*");
request.response.headers.add("Access-Control-Allow-Methods", "POST,GET,DELETE,PUT,OPTIONS");
request.response.statusCode = HttpStatus.OK;
if (request.method == "OPTIONS") {
//pre-flight request
request.response.close();
} else {
print(request.method);
print(request.headers.contentType);
request.response.close();
}
});

关于dart - HttpRequest(Web客户端)和HttpRequest(服务器):方法和contentType不交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27503202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com