Nginx 跨域配置

随着 RESTFul 的流行,就会牵扯到跨域问题,那么小伙伴有没有被坑过,高人绕过,有需求的请往下看:

location / {
  if ($request_method = ‘OPTIONS‘) {
    add_header ‘Access-Control-Allow-Origin‘ ‘*‘;
    #
    # Om nom nom cookies
    #
    add_header ‘Access-Control-Allow-Credentials‘ ‘true‘;
    add_header ‘Access-Control-Allow-Methods‘ ‘GET, POST, OPTIONS‘;
    #
    # Custom headers and headers various browsers **should** be OK with but aren‘t
    #
    add_header ‘Access-Control-Allow-Headers‘ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type‘;
    #
    # Tell client that this pre-flight info is valid for 20 days
    #
    add_header ‘Access-Control-Max-Age‘ 1728000;
    add_header ‘Content-Type‘ ‘text/plain charset=UTF-8‘;
    add_header ‘Content-Length‘ 0;
    return 204;
  }
  if ($request_method = ‘POST‘) {
    add_header ‘Access-Control-Allow-Origin‘ ‘*‘;
    add_header ‘Access-Control-Allow-Credentials‘ ‘true‘;
    add_header ‘Access-Control-Allow-Methods‘ ‘GET, POST, OPTIONS‘;
    add_header ‘Access-Control-Allow-Headers‘ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type‘;
  }
  if ($request_method = ‘GET‘) {
    add_header ‘Access-Control-Allow-Origin‘ ‘*‘;
    add_header ‘Access-Control-Allow-Credentials‘ ‘true‘;
    add_header ‘Access-Control-Allow-Methods‘ ‘GET, POST, OPTIONS‘;
    add_header ‘Access-Control-Allow-Headers‘ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type‘;
  }
}

大家看这代码是否有点臃肿?那么这样呢?

location / {
  add_header ‘Access-Control-Allow-Origin‘ ‘*‘;
  add_header ‘Access-Control-Allow-Credentials‘ ‘true‘;
  add_header ‘Access-Control-Allow-Methods‘ ‘GET, POST, PUT, DELETE, OPTIONS‘;
  add_header ‘Access-Control-Allow-Headers‘ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Token‘;
  if ($request_method = ‘OPTIONS‘) {
    add_header ‘Access-Control-Max-Age‘ 1728000;
    add_header ‘Content-Length‘ 0;

    return 204;
  }
}

依然可以达到跨域效果,但是有什么缺点,欢迎交流~

参考 :https://michielkalkman.com/snippets/nginx-cors-open-configuration/

时间: 2024-10-07 18:48:28

Nginx 跨域配置的相关文章

nginx跨域配置

假设前端页面的地址为: 192.168.1.1/arcgis40/index.html 页面物理路径为: X:\nginx-1.9.15\html\arcgis40 那么请求服务时,当ajax代码如下时: $.ajax({ type: "GET", dataType:"json", url: "getVector/all/1/2/3", success: function (data) { alert(JSON.stringify(data));

跨域配置

SpringBoot跨域配置 我们的后端使用Spring Boot.Spring Boot跨域非常简单,只需书写以下代码即可. @Configuration public class CustomCORSConfiguration { private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowe

学习-【前端】-关于nginx跨域的配置

一般来说我们的网站都是要使用代理服务器来分配不同端口,这里就nginx介绍,我们的混合app需要用到跨域的设置来完成数据交互,那么这里给出nginx跨域设置,当然,这里设置完本身后台服务器也要设置哦. location ^~/abc { add_header "Access-Control-Allow-Origin"  ""; add_header "Access-Control-Allow-Headers"  "Content-Typ

nginx 跨域acl

nginx跨域访问配置,需要配置多个源域名,有简单的方法,但不安全: add_header "Access-Control-Allow-Origin" * 以下是我的配置: <--------nginx config----------->                 if ( $http_origin ~* (https?://(.+\.)?(youyuan|uyuan)\.(.*)$) ) {                           add_header

Nginx 跨域使用字体

今天在使用子域名访问根域名的CSS时,发现字体无法显示,在确保CSS和Font字体的路径加载无问题后,基本确定是因为跨域的问题. 通过Nginx模块HttpHeadersModule来添加Access-Control-Allow-Origin允许的地址. 解决方法 在Nginx的conf目录下修改nginx.conf或者vhost下对应的domain conf,添加以下代码: location ~* \.(eot|ttf|woff)$ {add_header Access-Control-All

nginx跨域了解与模拟与解决

模拟由于跨域访问导致的浏览器报错,在nginx代理服务器上设置相应参数解决 nginx 跨域一.同源策略何为同源:1.协议(http/https)相同2.域名(IP)相同3.端口相同 浏览器遵循同源策略的目的同源策略的目的是为了保证用户信息的安全,防止恶意的网站窃取数据.此策略可以防止一个页面的恶意脚本(JavaScript语言编写的程序)通过该页面的文档对象模型来访问另一网页上的敏感数据. 同源策略是必需的,否则cookie可以共享,互联网就毫无安全可言,同源策略仅适用于JavaScript脚

nginx跨域设置

nginx跨域问题例子:访问http://10.0.0.10/ 需要能实现跨域 操作:http://10.0.0.10/项目是部署在tomcat里面,tomcat跨域暂时还不会,按照网上的方法操作也没成功只有用Nginx做个代理,解决跨域问题了! 1.将www.tangxiaoyue.com域名指向http://10.0.0.11/.只有在域名上设置才能实现跨域.(10.0.0.11是Nginx的IP)2.在nginx上的配置文件tang.conf进行设置 配置文件例如: server { li

Nginx跨域问题

Nginx跨域无法访问,通常报错: Failed to load http://172.18.6.30:8086/CityServlet: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://test.dingkailinux.cn' is therefore not allowed access. 可以在nginx的配置文件中对应的localtion中添加: a

springboot跨域配置

关于什么是跨域的问题,感兴趣的同学可以看阮一峰老师的日志 http://www.ruanyifeng.com/blog/2016/04/cors.html. 下面贴出我在springboot项目中的跨域配置. 1.CorsConfig package com.example.demo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configur