问:Flutter - 跨域问题

在web开发的过程中,请求本地服务器接口时,总是遇到跨域的问题,既可以设置前台代理,也可以设置服务器接口支持跨域。

第一种:通过设置服务端接口支持跨域。

package com.x.fm.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class DefaultView extends WebMvcConfigurerAdapter {

    /**
     * 跨域支持
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").allowedOrigins("*").allowedMethods("*").allowCredentials(false).maxAge(3600);
    }
}

第二种:通过设置nginx的方式。

location /{
 add_header Access-Control-Allow-Origin *; 
 add_header Access-Control-Allow-Methods '*'; 
 add_header Access-Control-Allow-Headers '*'; 
  
 if ($request_method = 'OPTIONS') { 
 return 204; 
 }

第三种:代理服务shelf_proxy

这种方式最简单,网上的资料一堆,但是我试验了很多次,都没有成功,偶尔成功过,也不知道什么原因。

第四种:删除,修改文件

例如:在flutter\packages\flutter_tools\lib\src\web\chorme.dart文件中添加 --disable-web-security ......
这种方式也尝试过,不太理想,没有成功,没太大的深究,大家可以尝试。

ps:

web 无法从另一个域加载网络图像,这是图片跨域的问题导致的。
我无法通过 API 调用从其他域加载 flutter web 中的网络图像.收到这个错误
试图从另一个域加载图像?

解决:
修改 阿里云(其他的云服务器也差不多) OSS的 跨域设置
设置跨域规则:来源 * ,允许Method Get,返回 Vary: Origin ✅,如果不行,刷下CDN缓存

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容