大家好,如果您还对什么是跨域?以及解决方案 不太了解,没有关系,今天就由本站为大家分享什么是跨域?以及解决方案 的知识,包括的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
那么什么是跨域问题?本文将使您从本质中了解什么是跨域问题以及如何解决问题
一、跨域有什么现象
首先,让我们看一下现象以及跨域问题的产生。例子:
上一节:浏览器正在访问页面:https://www.ceshi.com/list,并且在此页面中发送了HTTP接口。后端:访问已访问的后端界面是:3https://xxxapi.ceshi.com/project/getList此时,该页面将无法访问界面并报告错误:已被CORS Policy :封锁:响应PreFlighTrequest dreflightrequest不通过访问控制检查检查检查
翻译:对请求的响应尚未传递访问控制检查
这意味着没有配置相关的跨域参数,并且无法访问此接口。
二、什么是跨域问题?
例如,当浏览器访问页面时,请访问3https://www.ceshi.com/list
目前,协议,主机和端口是https,www.ceshi.com,80
然后,在此页面中,接口请求,协议,主机和端口必须与当前页面相同,并且在访问它之前,所有三个页面都必须相同。
否则,将发生上述跨域现象
例如,浏览器打开页面https://www.ceshi.com/list,
在此页面中,您可以请求接口https://www.ceshi.com/edit
因为他们的协议,主机和端口都是相同的,所以可以成功请求该请求。
总而言之:在浏览器中,只有当协议,主机和端口是相同的时候,它们才能互相访问,否则,他们无法访问它。
请注意,在浏览器中
在这里,我们将了解什么是跨域
三、跨域问题是怎么造成的
此问题涉及浏览器的相同原始政策
这是浏览器的相同原始政策。您可以从上面的示例中知道
所谓的相同原始策略实际上是协议,主机和端口是相同的,因此它们可以互相访问。否则,如果存在差异,则访问将失败,从而导致跨域问题;
注意:跨域问题仅出现在浏览器中。由于浏览器具有相同的原始政策,因此将存在跨域问题。
我还认为跨域问题是由浏览器的同源政策引起的,因此我可以通过在请求之前添加一些配置来解决它。
为什么通过向响应标头添加点来解决?为什么是后端?跨域问题是由浏览器引起的。这与后端有什么关系?
从以上,我们知道,如果我们通过:访问的URL与协议,主机和端口不同,则没有差异,因此无法请求。
那么问题是:
为什么请求不起作用?由于请求不起作用,在哪个http阶段该请求不起作用?是浏览器拦截请求但不允许发送请求的浏览器,这会导致阻塞?还是浏览器拦截响应,这会导致阻塞?答案是:请求可以正常发送,后端也正常响应。浏览器拦截了响应,因此开始出现。
已被CORS Policy :对Preflightrequest的响应阻止
通过使用图片来说明它很容易理解,如下所示:
四、如何解决跨域问题
通过上图,我们知道浏览器拦截了响应(与舞台上的请求无关),从而导致整个HTTP请求无法通过。
因此,如何解决问题,以便接口可以正常发送并正常接收响应数据?
很容易想到如何在响应标题中添加一些特殊字段。当浏览器看到这些字段时,它不会拦截它们。那么跨域问题不会解决吗?
实际上,这正是它的本质。这也是解决跨域问题的好奇心。为什么在后端添加了一些配置?实际上,是在响应标题中添加一些特殊的响应标头。
那么这些特殊响应标题是什么?
让我们首先看一下www.ceshi.com如何解决它以及添加了哪些响应标题字段
是的,只要后端在响应时将以下字段添加到响应标头中,它就可以解决跨域问题。
访问控制- 允许孔:需要此字段。它的值是请求时原点字段的值,或者是A *,表明接受任何域名的请求已接受。访问控制- 允许征收:此字段是可选的。它的值是一个布尔值,指示是否允许发送cookie。默认情况下,cookie不包含在CORS请求中。设置为true,这意味着服务器明确允许它。 cookie可以包含在请求中,并一起发送到服务器。此值只能设置为true。如果服务器未通过浏览器发送cookie,则可以删除字段访问控制- 允许使用:此字段是必需的,其值是一个逗号分隔的字符串,表明服务器支持的所有交叉域请求方法。请注意,返回所有受支持的方法,而不仅仅是浏览器要求的方法。这是为了避免多个“前飞行”请求。实际上,最重要的是访问控制- 允许原始字段,添加A *以允许所有域访问。
五、总结
通过上述说明,我们现在将以下总结
相同的原始策略:协议,主机和端口都是相同的,也就是相同的来源。只要有差异,它是不同的来源,并且只有来自同一来源的资源才能相互访问;跨域问题是由浏览器相同的原始政策引起的。跨域问题的本质是浏览器截止了响应,因此后端只需要在响应标头中添加相应的字段即可解决跨域问题。主要记住这张照片:
原创文章,作者:匿名,如若转载,请注明出处:https://www.xinyuspace.com/23259.html
用户评论
一生荒唐
终于找到解释跨域问题的文章了!我之前一直在做Web项目遇到这个问题总是很头疼,看了你的解释非常清晰明白,让我对跨域理解更深一层了。 感谢作者分享!
有20位网友表示赞同!
闲肆
个人觉得标题点明主题,内容也比较详细,覆盖了常见的跨域解决方案。作为一名新手学习web开发,这篇博客真让我受益匪浅!
有9位网友表示赞同!
我绝版了i
这段代码实现跨域请求的方式,我之前用过JSONP方法,这个XMLHttpRequest + cors有点新颖,下次试试看效果怎么样?希望作者能再分享一些其他解决方法。
有13位网友表示赞同!
虚伪了的真心
说白了就是访问不同域名之间的资源的问题,其实在我看来这些跨域解决方案只是在规避浏览器安全策略的限制,本质上还是存在风险的。比如服务器端的安全问题一旦出现,用户数据就可能泄露!
有13位网友表示赞同!
微信名字
跨域请求确实很蛋疼,特别是混合环境下更加复杂,这篇文章说的蛮详细的,感觉对解决实际问题有一定的帮助。
有8位网友表示赞同!
墨染殇雪
我觉得标题写的不太准确,应该加一点“web开发”之类的关键词,吸引更多想要查找相关知识的人。文章内容还是值得点赞的,希望能继续更新更多关于跨域方面的技术分享!
有20位网友表示赞同!
ゞ香草可樂ゞ草莓布丁
对于初学者来说,这篇博文比较深入,很多概念都不太理解。建议作者在解释时能补充一些简单的示例或案例,会更容易让人理解。
有15位网友表示赞同!
古巷青灯
跨域问题一直困扰着我很久了!这篇文章虽然没有给出完美的解决方案,但我从中收获了很多的知识,例如JSONP, AJAX, cors等方式!
有14位网友表示赞同!
珠穆郎马疯@
我是学生党,最近在做项目就遇到跨域问题,看着这篇文章我感觉有点太难懂啊…
有6位网友表示赞同!
孤单*无名指
这篇博文内容非常干货,将不同类型跨域请求的解决方案都介绍了,而且代码示例也很清晰易懂,强烈推荐给学习web开发的小伙伴!
有11位网友表示赞同!
淡抹丶悲伤
跨域问题确实很头疼,有时感觉解决起来就像做一道难解的数学题一样。这篇博客内容虽然很详细,但对我来说还是有点难度啊,还需要多研究研究!
有14位网友表示赞同!
在哪跌倒こ就在哪躺下
这个JSONP的方法我还真没用过,看了文章介绍,感觉很有用!感谢作者分享这个好用的跨域解决方案!”
有13位网友表示赞同!
孤自凉丶
对于我这样没有接触过web前端开发的基础知识的人来说,这篇文章内容还是有点难懂,建议针对不同学习阶段的读者添加相应的技术解释和入门指南。
有13位网友表示赞同!
情字何解ヘ
很实用的一篇博文!把各种跨域攻击风险也提及了,提醒我们要注意服务器端的安全配置,避免跨域漏洞被人利用。
有5位网友表示赞同!
小清晰的声音
写得真好! 终于找到了解决跨域请求的方法!之前总是卡在这个环节,现在终于可以顺利完成项目开发了, 感谢作者!
有5位网友表示赞同!
゛指尖的阳光丶
文章提到的cors规范还是蛮好的,以后我学习web开发的时候一定把这个知识点记下来!
有16位网友表示赞同!