浏览器跨域处理

本文介绍了两个常见的跨域问题:'Access-Control-Allow-Origin' 头部包含多个值导致的错误和预检请求(Option)中不允许的请求头。问题1的解决方案是删除后端的跨域处理逻辑,避免重复。问题2的解决方法是在Nginx配置中添加缺失的'Access-Control-Allow-Headers'头,确保所有必要的请求头都被允许。通过这些修正,可以确保跨域请求的正确执行。
摘要由CSDN通过智能技术生成

 问题1

The 'Access-Control-Allow-Origin' header 
 contains multiple values 'http://172.xxx.xxx.xxx:xxx, *', but only one is allowed.
原因 
 跨域配置重复了,nigix配置了跨域处理,后端代码也配置了跨域处理
解决方案

删除后端跨域处理逻辑

问题2 
 Request header field * is not allowed by Access-Control-Allow-Headers in preflight response
 

原因:
 在正式跨域的请求前,浏览器会根据需要,发起一个“PreFlight”(也就是Option请求),用来让服务端返回允许的方法(如get、post),
 被跨域访问的Origin(来源,或者域),还有是否需要Credentials(认证信息);
 解决方案

可以在ngnix中添加如下配置
 add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';

Google浏览器(即Google Chrome)对跨域处理方式如下: Google浏览器在遵循同源策略的基础上,提供了一些机制来处理跨域请求,以确保用户的安全和隐私。 1. CORS(跨域资源共享):Google浏览器支持使用CORS来进行跨域请求,这是一种标准的跨域解决方案。当浏览器发起跨域请求时,服务器可以在响应中设置一些特殊的头信息,通知浏览器该请求可以被访问。通过设置正确的CORS头信息,服务器可以控制允许访问的域,请求方法和头信息等。 2. JSONP(JSON with Padding):Google浏览器支持JSONP来进行跨域请求。JSONP是一种通过动态创建<script>标签来实现的跨域请求,由于<script>标签不受同源策略限制,因此可以用于跨域请求。然而,JSONP只支持GET请求,且由于安全性问题,需要接口提供方正确处理回调函数。 3. 代理服务器:如果其它跨域解决方案不可行,Google浏览器还可以通过设置代理服务器来实现跨域请求。通过将跨域请求发送到代理服务器,再由代理服务器发起真正的请求,可以规避浏览器的同源策略限制。但需要注意,代理服务器需要进行额外的配置和维护,且可能存在性能损耗。 总之,Google浏览器通过支持CORS、JSONP和代理服务器等方式,给予了开发者一些较为灵活的跨域请求解决方案,以便更好地满足用户和开发者的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值