为什么form表单提交没有跨域问题,但ajax提交有跨域问题?

 

为什么form表单提交没有跨域问题,但ajax提交有跨域问题?

 

众多回答:

跨域是浏览器的一种安全机制,form提交没有跨域是因为form提交情况下,跨域没有任何安全问题。ajax提交跨域,或者说iframe之间跨域,都会有安全问题。

 

关键在于如果能得到服务器返回的信息,跨域是危险的。

 

跨域限制的是从js里发起的请求,表单发起的请求并不需要js。

 

所谓的跨域问题只是浏览器强加给js的规则而已,世界本无跨域限制。是浏览器强制不允许js访问别的域,但是浏览器却没有限制它自己。比如说img标签可以加载任何域的图片,script可以加载任何域的js。再比如说你不能从前端js去调淘宝的接口获取ip对应的城市地址信息,,但是你可以手敲在浏览器地址栏,直接打开。

 

ajax跨域是因为浏览器需要保护用户的安全和隐私而给js设定的限制。如果你自己写个浏览器去掉这个限制那js就可以任意跨域访问了.

form表单可以跨域一个是历史原因要保持兼容性,一个是form表单会刷新页面不会把结果返回给js,所以相对安全.

jsonp跨域其实也是利用了浏览器的历史兼容性,而最新的font资源就不允许直接跨域引用。

猜你喜欢

转载自huangqiqing123.iteye.com/blog/2420542
今日推荐