Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[网络] 7. 何为跨域? 跨域请求数据有几种方式?图片/脚本 等资源有什么跨域问题。如何解决?跨域请求时如何携带 cookie #944

Open
qiilee opened this issue Feb 24, 2020 · 0 comments

Comments

@qiilee
Copy link
Member

qiilee commented Feb 24, 2020

答案:

1. 何为跨域?

  • 由于浏览器同源策略,凡是发送请求 url 的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。
  • 同源策略限制了一个源(origin)中加载文本或脚本与来自其它源(origin)中资源的交互方式。同源指的是协议、域名、端口相同,同源策略是一种安全协议。

2.跨域请求数据有几种方式?

(1)JSONP 动态创建 script 标签

但缺点是只支持 get 请求,并且很难判断请求是否失败(一般通过判断请求是否超时)。

(2)Proxy 代理

这种方式首先将请求发送给后台服务器,通过服务器来发送请求,然后将请求的结果传递给前端。

(3)CORS 跨域

是现代浏览器提供的一种跨域请求资源的方法,需要客户端和服务器端的同时支持。整个 CORS 通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS 通信与同源的 AJAX 通信没有差别,代码完全一样。浏览器一旦发现 AJAX 请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现 CORS 通信的关键是服务器。只要服务器实现了 CORS 接口,就可以跨源通信。

3.图片/脚本 等资源有什么跨域问题。如何解决?

4.跨域请求时如何携带 cookie

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant