HarmonyOS 鸿蒙Next Web跨域,C++层如何给请求Header增加Access-Control-Allow-Origin

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Web跨域,C++层如何给请求Header增加Access-Control-Allow-Origin

你好,项目中使用了 Web 加载本地沙箱目录中的 H5 资源,为了解决 js、css 等资源引用出现的跨域问题,根据https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-cross-origin-V5 文档,已采用自定义 host 方式,然后通过 onInterceptRequest 拦截处理。

自定义 host 拟定:https://localhost

url 完整示例:https://localhost/com.my.test.mytext/index.html

通过调试,又出现新的跨域问题,报错日志:

经过排查:是因为 H5 页面内部有采用网络请求的方式,请求的域名与 https://localhost 不同而出现的跨域问题。

找到参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-scheme-handler-V5

通过研究文档,发现文档提供的是拦截 rawfile 处理。而我们项目需要的是拦截 https://localhost 域名所加载的 H5 页面发起的接口请求,并在请求的 Header 增加字段 setHeader(“Access-Control-Allow-Origin”, “file://”) 处理

请问这种方式怎么实现呢?


更多关于HarmonyOS 鸿蒙Next Web跨域,C++层如何给请求Header增加Access-Control-Allow-Origin的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

最新版本API12有新增属性支持跨域

使用setPathAllowingUniversalAccess,在resource目录下创建resfile文件夹放入index.html访问远程地址

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5#setpathallowinguniversalaccess12

更多关于HarmonyOS 鸿蒙Next Web跨域,C++层如何给请求Header增加Access-Control-Allow-Origin的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这个只能解决本地资源跨域,在 html 项目中发起的 axios 请求还是会被资源安全策略拦截,

在HarmonyOS(鸿蒙)系统中处理Next Web跨域问题时,如果需要在C++层给请求Header增加Access-Control-Allow-Origin,这通常涉及到对HTTP请求或响应的处理。不过,值得注意的是,Access-Control-Allow-Origin是一个响应头,用于服务器指示哪些来源可以访问资源,而不是请求头。

在C++层处理时,你需要确保是在生成HTTP响应的部分添加这个头部。以下是一个简化的示例,假设你使用的是某种C++ HTTP库(注意,具体实现会根据你所使用的库有所不同):

#include <your_http_library.h> // 假设这是你的HTTP库头文件

// 假设有一个创建HTTP响应的函数
void createHttpResponse(HttpResponse& response) {
    // 设置状态码等
    response.setStatusCode(200);
    
    // 添加Access-Control-Allow-Origin头部
    response.addHeader("Access-Control-Allow-Origin", "*");
    
    // 其他响应设置...
}

在这个例子中,createHttpResponse函数接受一个HttpResponse对象作为参数,并设置响应状态码和添加Access-Control-Allow-Origin头部。*表示接受所有来源的请求,你也可以指定具体的域名。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部