stevenjin 2024-11-23 13:44 采纳率: 96.8%
浏览 26
已结题

通过uniapp调用webapi接口,实现开发环境中用本地设备数据上传到用unapp发布的小程序

环境:.net core web api,uniapp,工控机上有内外两个网卡,可上网
目的:通过uniapp调用webapi接口,实现本地设备数据上传到用unapp发布的小程序
遇到的问题:
本地已经配置过跨域了,开发环境可以。但用手机访问时会提示“url not in domain list”
Dcloud有域名或云空间解决这个问题,可以指导一下吗?

  • 写回答

1条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    你的问题涉及到跨域请求的问题,特别是在使用uniapp调用本地webapi接口时。由于本地API运行在localhost上,当你在uniapp试图请求它时,由于浏览器的同源策略限制,会报“url not in domain list”这样的错误。要解决这个问题,有几种可能的解决方案:

    1. 配置服务器以允许跨域请求: 如果你正在使用的是ASP.NET Core Web API,你可以在启动项目中配置CORS策略以允许来自特定域的请求。这样,即使API运行在localhost上,只要uniapp应用知道正确的URL,它也可以发送请求。这通常涉及到在Startup.cs文件中配置CORS中间件。

    例如:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors(options =>
        {
            options.AddPolicy("MyCorsPolicy", builder =>
            {
                builder.WithOrigins("你的uniapp应用的URL") // 这里替换为你的uniapp应用的URL
                       .AllowAnyHeader()
                       .AllowAnyMethod();
            });
        });
        // 其他配置...
    }
    

    然后在需要的地方启用CORS中间件(通常是控制器方法上)。如果你只是需要一个临时解决方案进行调试,可以使用开发者证书并在控制台输入URL来临时解决跨域问题。然而在生产环境中使用这些技术是不安全的,因此请确保你理解这些更改的含义并谨慎操作。 2. 使用Dcloud提供的云空间: Dcloud提供了云空间服务,你可以将你的webapi部署到云空间,这样就可以使用公共域名访问你的API。通过这种方式,不需要考虑跨域问题,因为uniapp小程序可以合法地访问公开的API地址。这种方法比较安全且易于管理,但需要一定的部署和配置工作。此外,这也取决于你的项目需求和预算是否适合使用云空间服务。 3. 开发模式下的解决方案: 如果你只是在开发环境中遇到这个问题,一个快速的解决方案是使用代理服务器或者某些浏览器插件来绕过CORS限制。然而这种方法仅适用于开发阶段,不适用于生产环境。一旦进入生产环境,建议按照第一种或第二种方法进行配置和解决。总之你需要根据你的具体需求和环境来选择合适的解决方案。关于跨域问题可以参考前端相关技术社区或者论坛,这些平台有很多详细教程可供参考。希望这些建议能对你有所帮助!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月1日
  • 已采纳回答 11月23日
  • 修改了问题 11月23日
  • 创建了问题 11月23日