Cross-Origin Resource Sharing (CORS) 跨域,一个网站引用了另外一个网站的资源,就需要跨域了。
最通俗点,就是服务器的返回头上要加上三行:
1Access-Control-Allow-Origin", "*"
2Access-Control-Allow-Methods", "GET, POST, OPTIONS"
3Access-Control-Allow-Headers", "DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization"
说白点:就是允许的来源站,允许的方法,允许的头信息
那在不同的地方配置又不相同:
一、Nginx
1 server {
2 add_header Access-Control-Allow-Origin *;
3 add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
4 add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
二、openresty中的lua脚本
1location /pg/nginit {
2 rewrite_by_lua_block {
3 ngx.log(ngx.ERR, "Environment configuration update, about to get configuration information from redis")
4
5 -- 添加跨域 CORS 头
6 ngx.header["Access-Control-Allow-Origin"] = "*" -- 允许所有域名请求
7 ngx.header["Access-Control-Allow-Methods"] = "GET, POST, OPTIONS" -- 允许的方法
8 ngx.header["Access-Control-Allow-Headers"] = "DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization" -- 允许的请求头
三、AWS的S3
1<CORSConfiguration>
2 <CORSRule>
3 <AllowedOrigin>http://example.com</AllowedOrigin>
4 <AllowedMethod>GET</AllowedMethod>
5 <AllowedHeader>*</AllowedHeader>
6 </CORSRule>
7</CORSConfiguration>
四、AWS Lambda 或者 API Gateway
1headers: {
2 'Access-Control-Allow-Origin': '*',
3 'Access-Control-Allow-Credentials': true,
4}
最后,AWS的ALB不支持配置CORS!!!,必须在后端的 application 中设置。