在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缓存
网友评论