nginx面试题服务器如何设置ajax跨域

nginx配置ajax请求跨域
nginx配置:
access_log
/var/log/nginx/11.access.
/var/log/nginx/11.error.
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';
proxy_pass http://ip:port/;
大致解释如下:
nginx监听18081端口,如果是访问的18081端口则进入监听,add_header四行即为配置的跨域信息,proxy_pass即为实际要访问的请求地址,
如服务器地址为192.168.60.11, 服务器上有个tomcat端口为8080,外部ajax需要访问该tomcat时只需要在proxy_pass配置为http://192.168.60.11:8080/,并重启nginx生效,则外部访问192.168.60.11:18081时就会自动代理至http://192.168.60.11:8080/,
nginx测试命令:./nginx -t;
nginx启动命令:./nginx -
没有更多推荐了,AJAX跨域轻松配置nginx允许多个域名跨域访问
什么是跨域
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。所谓同源是指,域名,协议,端口相同。浏览器执行javascript脚本时,会检查这个脚本属于那个页面,如果不是同源页面,就不会被执行。同源策略的目的,是防止黑客做一些做奸犯科的勾当。比如说,如果一个银行的一个应用允许用户上传网页,如果没有同源策略,黑客可以编写一个登陆表单提交到自己的服务器上,得到一个看上去相当高大上的页面。黑客把这个页面通过邮件等发给用户,用户误认为这是某银行的主网页进行登陆,就会泄露自己的用户数据。而因为浏览器的同源策略,黑客无法收到表单数据。
我们在开发的过程很容易遇到跨域的问题,下面用nginx 配置解决nginx 多域名跨域的问题
当浏览器发起Ajax请求到其他域名时,会出现跨域的问题,在nginx上的解决方案是配置Access-Control-Allow-Origin来解决,但是当我们需要允许多个域名跨域访问时却不好配置,可以用map来实现
map $http_origin $other_domain {
default 0; "~http://1.nbwiki.com" http://1.nbwiki. "~http://2.nbwiki.com" http://2.nbwiki. "~http://3.nbwiki.com http://3.nbwiki. }server{listen 80;server_name www.nbwiki.root /location /{concat_max_files 20;add_header Cache-Control "public, max-age=3600";}location ~* .(ttf|ttc|otf|eot|woff|font.css)$ {add_header Access-Control-Allow-Origin $other_}}
上面讲的是如何实现多个域名跨域,如果需要允许所有域名跨域的看直接写 * 星号就好了
add_header Access-Control-Allow-Origin *;
没有更多推荐了,nginx反向代理中ajax跨域调用https问题
[问题点数:20分]
本版专家分:0
CSDN今日推荐
本版专家分:366
2014年12月 Linux/Unix社区大版内专家分月排行榜第一2014年11月 Linux/Unix社区大版内专家分月排行榜第一2014年10月 Linux/Unix社区大版内专家分月排行榜第一2014年9月 Linux/Unix社区大版内专家分月排行榜第一2014年8月 Linux/Unix社区大版内专家分月排行榜第一
2014年7月 Linux/Unix社区大版内专家分月排行榜第三2003年2月 C/C++大版内专家分月排行榜第三
本版专家分:199957
2017年 总版技术专家分年内排行榜第四2014年 总版技术专家分年内排行榜第四2013年 总版技术专家分年内排行榜第四2012年 总版技术专家分年内排行榜第六
2018年3月 总版技术专家分月排行榜第一2013年5月 总版技术专家分月排行榜第一
2018年4月 总版技术专家分月排行榜第二2016年7月 总版技术专家分月排行榜第二2016年3月 总版技术专家分月排行榜第二2015年12月 总版技术专家分月排行榜第二2014年8月 总版技术专家分月排行榜第二2014年7月 总版技术专家分月排行榜第二2013年6月 总版技术专家分月排行榜第二
2016年10月优秀大版主
2016年8月论坛优秀版主优秀大版主2015年7月优秀大版主2015年8月优秀大版主2015年8月优秀大版主2015年9月优秀大版主2015年5月优秀大版主2015年4月优秀版主2014年11月论坛优秀版主
本版专家分:0
本版专家分:366
2014年12月 Linux/Unix社区大版内专家分月排行榜第一2014年11月 Linux/Unix社区大版内专家分月排行榜第一2014年10月 Linux/Unix社区大版内专家分月排行榜第一2014年9月 Linux/Unix社区大版内专家分月排行榜第一2014年8月 Linux/Unix社区大版内专家分月排行榜第一
2014年7月 Linux/Unix社区大版内专家分月排行榜第三2003年2月 C/C++大版内专家分月排行榜第三
本版专家分:0
本版专家分:366
2014年12月 Linux/Unix社区大版内专家分月排行榜第一2014年11月 Linux/Unix社区大版内专家分月排行榜第一2014年10月 Linux/Unix社区大版内专家分月排行榜第一2014年9月 Linux/Unix社区大版内专家分月排行榜第一2014年8月 Linux/Unix社区大版内专家分月排行榜第一
2014年7月 Linux/Unix社区大版内专家分月排行榜第三2003年2月 C/C++大版内专家分月排行榜第三
匿名用户不能发表回复!|
其他相关推荐深入浅析Nginx实现AJAX跨域请求问题-阿里云资讯网
深入浅析Nginx实现AJAX跨域请求问题
发布时间:
更新时间:
来源:网络
上传者:用户
nginx跨域请求
AJAX从一个域请求另一个域会有跨域的问题。那么如何在nginx上实现ajax跨域请求呢?要在nginx上启用跨域请求,需要添加add_header Access-Control*指令。如下所示: location /{ add_header 'Access-Control-Allow-Origin' 'http://other.subdomain.com'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET'; ... ... the rest of your configuration here ... ... }
注释如下:
第一条指令:授权从other.subdomain.com的请求
第二条指令:当该标志为真时,响应于该请求是否可以被暴露
第三天指令:指定请求的方法,可以是GET,POST等
如果需要允许来自任何域的访问,可以这样配置:
Access-Control-Allow-Origin: *
service nginx reload
ajax跨域请求测试
成功时,响应头是如下所示: HTTP/1.1 200 OK Server: nginx Access-Control-Allow-Origin: other.subdomain.com
本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:zixun-group@service.aliyun.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。
大家都知道php上传文件有限制,如果没有修改过php.ini文件的话,默认的上传大小限制为2M,那么该如何上传大文件了,比如说上传一个1G多的大文件,可以使用大文件切割上传的方式来解决。 何为大文件切割上传? 原理:利用HTML5的新特性,将文件内容切割成分段的二进制信息,然后每次向服务器上传一段,而服务器,只需要把我们每次上传的二进制信息整合存储到一个文件中,那么最后这个文件就是所上...
本文实例为大家分享了ajax实现验证码功能的具体代码,供大家参考,具体内容如下 首先创建一个验证码: &%@ page contentType=&image/ charset=utf-8& language=&java& import=&java.util.*,java.awt.*,java.awt.image.*,java...
什么是FormData? FormData对象可以组装一组用 XMLHttpRequest发送请求的键/值对。它可以更灵活方便的发送表单数据,因为可以独立于表单使用。如果你把表单的编码类型设置为multipart/form-data ,则通过FormData传输的数据格式和表单通过submit() 方法传输的数据格式相同; 如何创建一个FormData对象 你可以自己创建一个FormData...
ajax跳转到新jsp页面
ajax刷新页面局部信息
ajax可以实现局部刷新页面,即在不刷新整个页面的情况下更新页面的局部信息。 项目中遇到一个问题:在用户列表也,当点击某个按钮时需要去查询用户的信息,查询成功跳转到用户详情界面;查询失败,则在原页面弹出提示信息。 想到两个解决办法: 方法一: 点击按钮,调用普通方法去查询用户信息,查询成功跳转到用户详情页面;查询失败,重定向调用查询用户列表的方法,在查询用户列表的方法结束后重新跳转到...
本文实例为大家分享了ajax实现输入提示效果的具体代码,供大家参考,具体内容如下 网站主页 &!DOCTYPE html& &html lang=&en&& &head& &meta charset=&UTF-8&& &title&Title&/title& &style...
本文实例为大家分享了ajax三级联动效果展示的具体代码,供大家参考,具体内容如下 主页面代码 &!DOCTYPE html& &html lang=&en&& &head& &meta charset=&UTF-8&& &title&Title&/title& &script...
若您要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在5个工作日内回复。
售前咨询热线
支持与服务
资源和社区
关注阿里云
InternationalEverything should be made as simple as possible, but no simpler
Nginx允许跨域访问的配置问题
如今前后端分离的模式,越来越成为很多团队的选择,通过分离前后端的工作,是的双方更能关注于自己核心的工作领域,只需要通过相应的API接口进行交互。
前后端工作的分离带来的一个问题就是前后端在部署上分离的可能性,在部署上的分离又会触发浏览器安全机制——同源策略,从而导致不能访问非同域的资源。同样要解决跨域访问的问题,网上的解决方案也有很多,就是在跨域资源的响应中,加上允许跨域访问头信息即可。
添加头信息有几种方式:1.
直接修改代码,在HTTP响应中添加上对应的头信息;2. 使用代理服务器,在代理服务器返回响应的时候,再添加响应的头信息。
我们这里选择的是第2种方式——使用Nginx作为反向代理服务器。在使用Nginx作为代理服务器,并在配置中对应的location下添加上如下的设置:
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
通过这两个配置,前端就可以跨域访问数据接口了。但是在后续的使用过程中遇到一个问题,就是简单的GET请求都是可以跨域访问到数据的,但是POST请求的时候浏览器依然报错说跨域访问被禁止。后来发现,是因为在POST请求时,处理数据过程中发生了异常,导致了浏览器报跨域访问错误。但为什么会这样呢?
经查,这是因为Nginx的add_header指令并不能在HTTP返回码为50X的时候起作用,由于服务器处理逻辑出错,导致了Nginx返回内部服务器错误(500),这个时候add_header是没有起作用的,故会出现这样的问题。
大家可以参考这个Nginx文档:http://nginx.org/en/docs/http/ngx_http_headers_module.html
没有更多推荐了,

我要回帖

更多关于 nginx一级跨域 的文章

 

随机推荐