ajax发送http请求会有跨域问题,为啥在浏览器地址栏上输入同样的url没有跨域问题?

slj123
  • 92

ajax请求和浏览器地址栏上输入url都是http请求,为啥前者有跨域问题,后者没有跨域问题呢?

回复
阅读 11.9k
7 个回答
zhayes
  • 1.2k

显然你对跨域的概念不清。我简单点讲哈,你的ajax文件所在的位置相当于一个域,服务器里的文件相当于一个域,显然你不能从这个域直接拿到另一个域里面的数据,如果可以,你想想多可怕,多不安全! 而你在浏览上输入url,只是让客户端(浏览器)想服务里发送请求,把相关的东西 html js 什么的全加载下来。而这些东西其实都是保存在同一个服务器这个域里面的(后台跟前端文件在一起),所以不存在什么跨域说法了。

叉叉哥
  • 3.7k

Ajax可以偷偷摸摸发请求,而不需要用户操作,用户不知情,那么问题就大了,如果你上了一个不安全的网站,这个网站Ajax偷偷发一个请求到你的网银网站(这里跨域了)拿到你的Cookie,把Cookie传到这个不安全的网站自己的服务器,那么你的网银就会被盗。所以浏览器不允许Ajax跨域。

那么为什么我在浏览器上直接输入地址可以访问?很简单,这一定是用户自己主动操作的,而不是某些不安全网站偷偷摸摸干的,浏览器认为这是安全的,所以允许。

跨域到底说的是跨的什么域呢?
你直接在地址栏里输入url有什么域可以跨呢?

这就好比一个陌生人(跨域)要求查看你的身份证,你认为不安全拒绝查看,换作警察(浏览器)要求查看,你认为警察的可信度很高,允许查看。去看看同源策略与跨域请求。

你本地启了一个服务发起一个ajax请求,你本地的服务一个域,服务端一个域,不一样所以跨域了。而在浏览器地址栏上直接输入url来发起一个请求,就只存在服务端这一个域。

首先不了解跨域是什么问题,就问为什么会出现跨域问题 。

宣传栏