本文最后更新于 678 天前,其中的信息可能已经有所发展或是发生改变。
在写博客文章的时候尝试在API服务器上加载hymmnos.ttf发现
CORS policy: No ‘Access-Control-Allow-Origin’header is present on the requested resource.
CORS policy对于用户与服务器的安全性有很大的作用,使用搜索引擎后发现这个可以通过修改Nginx服务器的配置文件解决,参照http://www.shuchengxian.com/article/576.html
另外,几个小提示
- 改的是你的API服务器的nginx配置文件,不是调用API服务器资源的服务器nginx配置文件
- 像我自己的服务器Access-Control-Allow-Origin后加上了’https://blog.shanwer.top’,这指的是允许哪个url跨域调用你API服务器的静态文件,记得一定要带’,然后你要不怕被滥用也可以改成*,加不加’无所谓
- 不要一股脑啥文件都允许跨域调用,这样做和chmod 777 /无异,人家直接把你当成公共CDN了(不是),像我就是几个常用的比如ttf,svg啥的允许调用
location ~ .*\.(eot|ttf|woff|woff2|svg)$ {
add_header Access-Control-Allow-Origin 'https://blog.shanwer.top';
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
}
对了,上面提到用到跨域资源加载的文章是
上面截止到2020年9月20日 下午8:21
最近为了吃顿饭颇下一顿功夫,如果使用javalin框架的话,则需要这样操作,header加入允许跨域请求才可被其他页面跨域调用json(以下为java代码,截自本人的一个项目)
var returnJsonApp = Javalin.create(/*config*/)
.before(ctx -> ctx.header("Access-Control-Allow-Origin", "*"))//后端还需要开发跨域,否则无法调用API
.get("/", ctx -> ctx.json(new getJson().getJson()))
.start(8080);