本人小白。。。网上也看了不少http资料,但只看清楚了他写了什么字,重来没懂他是什么意思。。。。
问题是这样的:目前是通过后端设置Access-Control-Allow-Origin: *来解决跨域的(后端我不懂)!前端一律通过ajax来请求接口,今天调个下载文件接口发现浏览器提示“No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access”,下面是请求截图:
请求成功了,数据也拿到了,但为何还是提示跨域呢???并且其他接口都没问题,唯独这个。。。。
然后我对比了下其他接口的响应头,其他接口响应头都有Access-Control-Allow-xxxx的相关信息 包括Access-Control-Allow-Origin:*;而这个接口响应头啥都没有!如果是没请求成功 数据也没拿到,我可能还以为后端没设置允许我这个域访问,但是现在。。。。。简直搞不清楚状况啊。。天书啊。。。这是,这和农田里随便找个农民伯伯给他讲解航空母舰的制造一样懵逼啊。。。。
我的理解是,这个跨域还是浏览器端拦截,虽然你后端返回数据,但是浏览器同源策略(由于没有Access-Control-Allow-Origin:*)还是认为跨域,所以也不会触发ajax的success,那这样的话问题又来了,如果后端没设置Access-xxx那我应该请求不了的。更不可能拿到数据,那如果设置了。。。Access-xxx去哪了?
本人就初中学历,希望前辈们能通俗易懂的讲解下整问题的来龙去脉,感激不尽!
这个讲的很详细 。https://developer.mozilla.org...
PS: 你把请求换成post试试,肯定报错。