# 五.跨域

前言

两种方式:1.设置响应头信息,浏览器读取接口响应头信息跨域;2.使用代理服务器的方式跨域

# 1.CORS 方式

类型 种类
语法 add_header name value
默认 add_header --
上下文 http,server,location
location ~ .*\.json$ {
    add_header Access-Control-Allow-Origin http://localhost:3000;
    add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
    root /data/json;
}
1
2
3
4
5
let xhr = new XMLHttpRequest();
xhr.open("GET", "http://47.104.184.134/users.json", true);
xhr.onreadystatechange = function () {
  if (xhr.readyState == 4 && xhr.status == 200) {
    console.log(xhr.responseText);
  }
};
xhr.send();
1
2
3
4
5
6
7
8
 server {
     ...
     location / {
         # 允许 所有头部 所有域 所有方法
         add_header 'Access-Control-Allow-Origin' '*';
         add_header 'Access-Control-Allow-Headers' '*';
         add_header 'Access-Control-Allow-Methods' '*';
         # OPTIONS 直接返回204h
         if ($request_method = 'OPTIONS') {
              return 204;
          }
      }
      ...
  }
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 2.代理方式