nginx 多域名跨域

当浏览器发起ajax请求到其他域名时,会出现跨域的问题,在nginx上的解决方案是配置Access-Control-Allow-Origin来解决,此参数只允许配置单个域名或者*,当我们需要允许多个域名跨域访问时却不好配置,可以用map来实现

map $http_origin $corsHost {
    default 0;
    "~http://www.123admin.com" http://www.123admin.com;
    "~http://m.123admin.com" http://m.123admin.com;
    "~http://wap.123admin.com" http://wap.123admin.com;
}
server
{
    listen 80;
    server_name search.123admin.com;
    root /nginx;
    location /
    {
        add_header Access-Control-Allow-Origin $corsHost;
    }
}

    add_header Access-Control-Allow-Origin *;

location / {
if ($request_method = ‘OPTIONS‘) {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods ‘GET,POST,PUT,DELETE,OPTIONS‘;
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‘;
add_header Access-Control-Allow-Credentials true;
return 204;
}

 

原文地址:https://www.cnblogs.com/mikeluwen/p/9528891.html

时间: 2024-10-17 04:06:29

nginx 多域名跨域的相关文章

CORS跨域与Nginx反向代理跨域优劣对比

最近写了一些关于前后端分离项目之后,跨域相关方案的基本原理和常见误区的帖子,主要包括CORS和Nginx反向代理.这两种方案项目中都有在用,各有优缺,关于具体使用哪种方案,大家的观点也不大一致,本文主要就此展开一下,从前后端及服务器配置.安全性.移植灵活性.扩展性等方面详细对比一下两种方案的优缺,以便于后期在方案选型上对大家有所帮助. 前端配置 CORS方案:跨域时部分浏览器默认不携带cookie,因此为了携带cookie需要设置一下xmlhttprequest的withCrendetails属

关于跨域问题(包括端口和域名跨域)

关于跨域问题(包括端口和域名跨域) 1.C#语言跨域 我估计任何语言在返回头加这个都可以解决跨域问题 //完全跨域设置 包括跨域名和端口 HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*"); //跨域名 HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", &qu

在ExpressJS中设置二级域名跨域共享Cookie

问题:我使用expressjs和mongostore来管理session.下面是expressjs中的设置. app.configure(function(){ app.use(express.session({ secret: conf.secret, maxAge: new Date(Date.now() + 3600000), cookie: { path: ‘/‘ }, store: new MongoStore(conf.db) })); }); 我已经在上面设置了cookie路径.但

经实测解决Access-Control-Allow-Origin多域名跨域问题

网上流传2种方法解决多域名跨域问题:1.Access-Control-Allow-Origin:[域名一],[域名二]: 2.用$_SERVER("HTTP_ORIGIN")获取来源地址,判断该域名是否属于允许跨域的域名数组,如果是则设置:Access-Control-Allow-Origin:$_SERVER("HTTP_ORIGIN"). 经实测第一种方法完全无效,第二种方法$_SERVER("HTTP_ORIGIN")并不总能获取来源地址,

7. Nginx资源的跨域访问

我们可以通过 add_header 指令,对 Response Header 项进行设置 add_header 语法使用说明:http://nginx.org/en/docs/http/ngx_http_headers_module.html add_header Access-Control-Allow-Origin *; 如果配置为 *,则表示允许任何跨域请求.由于会存在跨域攻击的风险,实际开发中很少会这样配置 专题阅读 1. Nginx的优点 2. Nginx的安装与开机自启 3. Ngi

Nginx 实现AJAX跨域请求

更多:http://www.webyang.net/Html/web/article_135.html 最新的W3C标准里是这么实现HTTP跨域请求的, Cross-Origin Resource Sharing 简单来说,就是跨域的目标服务器要返回一系列的Headers,通过这些Headers来控制是否同意跨域. 这些Headers有: 4 Syntax 4.1 Access-Control-Allow-Origin HTTP Response Header 4.2 Access-Contro

使用Nginx来解决跨域的问题

nginx的版本:(查看nginx命令: /usr/local/nginx/sbin/nginx -v) nginx/1.4.3 问题是:前端项目域名是 a.xxxx.com, 后端的接口域名是 b.xxx.com,然后后端接口没有设置跨域相关的响应设置头,因此就接口和我们域名就会存在跨域的情况,因此我们可以使用 nginx服务器来配置一下: 网上很多资料将 在nginx配置下 加如下代码就可以解决跨域的问题: add_header Access-Control-Allow-Origin *;

nginx 解决AJAX 跨域问题。

AJAX跨域的问题很常见,有较多的解决办法如:jsonp,设置服务端允许跨域,给请求加代理等等解决方式,我项目中常用node.js搭建中间代理的方式解决.下面我将尝试采用nginx做代理的方式解决跨域的问题. 第一步:搭建Server API,其中未设置允许跨域.get方法,返回英雄列表.(http://localhost:8081/heroes) 第二步:写页面测试ajax请求(http://localhost:8081/heroes),结果显示跨域了. 顺便说一下:如果要修改服务端只需要设置

Nginx和tomcat跨域问题

项目用途:机顶盒 Portal 环境说明: 1.使用Nginx 1.8.1 加载静态页面 *.html,在静态页面上去调用服务接口: 2.Tomcat 6 加载项目: 遇到问题:机顶盒访问不了页面,无法加载数据. 分析: 1.查看接口日志,传入与输出信息均正常: 2.抓包,分析数据显示没有问题. Ajax 就是接收不到返回的数据信息,找了很久这个问题,原来是跨域给拦截了. 流程,如图: 解决方案 1: 修改tomcat配置文件tomcat/conf/web.xml,修改过滤器配置,添加: <fi