逆浏览器请求之JS跨域访问

禁用跨域访问是浏览器保证安全访问的一项重要策略限制,很多跨域访问的操作都是违逆浏览器标准的。在一些场合不得不又需要用到,则本文大致说明下,在Nginx作为服务端是如何解决跨域访问。

参数解释

一些主要的跨域参数

Access-Control-Allow-origin # 授权允许来源
Access-Control-Allow-Methods # 授权允许方法
Access-Control-Allow-Headers # 授权允许请求头
Access-Control-Expose-Headers # 可公开响应头
Access-Control-Allow-Credentials # 允许认证 即开放cookie

 

允许带cookie访问的配置

解释如下配置,允许 http://localhost:8080 整个来源进行访问。

Access-Control-Allow-Origin 支持 *,支持多个域名配置如:"http://localhost:8080,http://localhost:8081",用逗号进行隔开。

但此处因为有允许进行认证(授权cookie),即Origin不支持 * 也不支持多个域名配置,仅支持单项域名配置。

Access-Control-Allow-Methods 允许GET,POST,OPTIONS请求访问,如果想要支持其他请求将其加入其中。OPTIONS是预检请求,跨域中必须要将其开放。

Access-Control-Allow-Headers 允许客户端传递的header参数,如果客户端传递的header不在其中,则请求会失败。如需通过Authorization进行校验用户身份,则将Authorization配置到请求头。

同样,服务端如要返回其他响应头给客户端,也需指定,通过Access-Control-Expose-Headers配置,支持逗号隔开多个参数。

Access-Control-Allow-Credentials 允许授权cookie,允许必须为true,否则其它即禁用。

		add_header Access-Control-Allow-Origin "http://localhost:8080";
		add_header Access-Control-Allow-Methods 'GET, POST, 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-Expose-Headers 'Authorization';
		add_header Access-Control-Allow-Credentials 'true';

 

允许任何域名带cookie访问

此操作安全极低,如需要可如下配置。

set $origin $http_origin;
if ( $origin = '' ) {
	set $origin "$scheme://$host:$server_port";
}
add_header Access-Control-Allow-Origin "$origin";

转载于:https://my.oschina.net/u/2366984/blog/3102337

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值