设置允许所有的请求

  1. server {
  2. location / {
  3. add_header 'Access-Control-Allow-Origin' '*';
  4. }
  5. }

只允许GET请求

  1. server {
  2. location / {
  3. add_header 'Access-Control-Allow-Origin' '*';
  4. add_header 'Access-Control-Request-Method' 'GET';
  5. }
  6. }

请求白名单

  1. server {
  2. location / {
  3. # 白名单
  4. if ($http_origin ~* (baidu\.com|github.xuexb.com)$) {
  5. add_header 'Access-Control-Allow-Origin' '$http_origin';
  6. # 允许cookie
  7. add_header 'Access-Control-Allow-Credentials' true;
  8. # 只允许某些方法
  9. add_header 'Access-Control-Request-Method' 'GET, POST, OPTIONS';
  10. # 支持获取其她字段, 需要前端设置 `xhr.withCredentials = true`
  11. add_header 'Access-Control-Allow-Headers' 'User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
  12. }
  13. }
  14. }

iconfont 字体跨域配置

  1. server {
  2. root xxx;
  3. # 使用location来匹配以字体文件
  4. location ~* \.(eot|otf|ttf|woff|svg)$ {
  5. add_header Access-Control-Allow-Origin *;
  6. }
  7. }

但如果你的 location 已经配置了, 可以使用 if 判断添加, 如:

  1. server {
  2. location / {
  3. # 使用判断请求文件来添加
  4. if ($document_uri ~ \.(eot|otf|ttf|woff|svg)$) {
  5. add_header Access-Control-Allow-Origin *;
  6. }
  7. }
  8. }