看了几篇文章,也没有搞懂,请解释一下?
最好的解释在这里
https://segmentfault.com/q/10...
问题演变成
<script>标签,只支持GET ?
我继续问,
为何
<script>标签,只支持GET ?
看了几篇文章,也没有搞懂,请解释一下?
最好的解释在这里
https://segmentfault.com/q/10...
问题演变成
<script>标签,只支持GET ?
我继续问,
为何
<script>标签,只支持GET ?
因为浏览器同源策略的限制,XHR 1.0
(XMLHttpRequests) 并不能对非当前域的网页发起ajax请求,原则上是为了安全考虑。
jsonp 其实就是利用了浏览器对部分标签没有进行同源策略限制的原理,通常是在本地先创建function 放在window下,然后 通过创建标签的形式来载入js 并自动执行。然而这个叫载入
的过程 其实只是有浏览器发起了一个js脚本的加载。然后并执行。
从另一个角度来源 加载不可信来源的JS 也会有风险
实现跨域请求的解决方案有很多,比如早期的iframe等... 想要了解更多的 可以 B站搜索 燕十八
其中一期 远古时代的ajax
在 XHR 2.0
中,引入了一个新的方式来处理跨域,就是对方允许你进行跨域请求,在浏览器发起跨域请求时 会先发起一个 options
请求,来检查发起请求的一方是否符合准入条件,如果满足,就允许请求发起真正的请求,如果不允许 请求成功后 数据也会被切断。
其实跨域从产生之初就有一个解决方案,那就是在本地建立一个反向代理服务器,对目标进行请求,这样就不存在跨域了。
10 回答10.4k 阅读
4 回答8.6k 阅读✓ 已解决
7 回答10.7k 阅读
2 回答11.3k 阅读✓ 已解决
6 回答2.5k 阅读
5 回答4.2k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
因为script就是页面获取脚本并执行啊,你见过浏览器加载文件用别的方法的吗,post是用来向服务器发送数据的。
还有,现在已经没有使用jsonp的必要了,其他方法不能跨域的jsonp一样不能跨,其他方法要修改服务器端的jsonp一样要修改,用点更现代的方法吧。