首页 > 解决方案 > QNetwork webassembly 的跨源错误

问题描述

我正在尝试在我的 c++ 代码中使用 QNetworkAccessManager 进行发布/获取调用,该代码使用 emscripten 暴露给 webassembly。

当暴露的函数在 Javascript 中编译和加载时,请求由于跨域请求而被阻塞。

我正在从包含 wasm、js 和 html 文件的文件夹中运行本地服务器。

[编辑]:在阅读了一些 CORS 之后,我尝试通过添加额外的标头参数来请求: request.setRawHeader("Access-Control-Request-Origin", "*");

但这也没有用。

QNetworkRequest request(this->server);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
request.setRawHeader("Access-Control-Allow-Origin", "*");    request.setRawHeader("Access-Control-Allow-Methods", "POST");

// building the json and network request object
QByteArray byte_payload = QJsonDocument(payload).toJson();
QEventLoop loop;
QObject::connect(&manager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);
loop.exec();

std::cout << "Request completed" << std::endl;

QByteArray reponse = reply->readAll();
std::cout << reponse.toStdString() << std:: endl;

你能告诉我如何解决这个问题吗?

浏览器上的跨源错误

[已编辑]:我尝试使用 package.json 为 cros 启用节点服务器cors。这使第一次OPTIONS调用成功,但POST发生的实际调用是使用不正确的有效负载发送的。

选项

邮政

标签: qtqt5webassemblyemscripten

解决方案


推荐阅读