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

[js] 第152天 说说CORS为何要区分预检请求和简单请求呢? #1207

Open
haizhilin2013 opened this issue Sep 14, 2019 · 2 comments
Labels
js JavaScript

Comments

@haizhilin2013
Copy link
Collaborator

第152天 说说CORS为何要区分预检请求和简单请求呢?

@haizhilin2013 haizhilin2013 added the js JavaScript label Sep 14, 2019
@mixj93
Copy link

mixj93 commented Sep 15, 2019

amandakelake/blog#62

@xiaoqiangz
Copy link

CORS:跨域资源共享也称为跨域请求,为什么要分预检请求和简单请求呢?
简单请求 :因为img的src、script的js只能发起get请求,而表单虽然能进行post提交,但一方面表单的提交是显式的,用户可以感知,另一方面,表单提交只能发起请求,而不能获取请求的响应,这样一来,请求可以发起,而服务端可以进行拒绝,浏览器认为这是安全的。
复杂请求:通过脚本发起的跨域请求,可以对响应内容做处理,这是用户不可感知的,浏览器认为这是不安全的,所以对于复杂请求,进行跨域的限制,而CORS机制就是浏览器对跨域进行处理。对于复杂请求会发起一个预检请求,判断服务端是否可以接受这个跨域请求,接受后就可以向服务端发起真正的请求。
为什么要发起预检请求呢?
1 限制跨域请求的发出
2 请求可以发出,但是响应结果会被拦截。
而浏览器免不了要进行跨域,访问资源哪有不跨域的,不跨域你只能看自己域里面的东西,所以浏览器一般是采用第二个拦截方式,而这种拦截方式,可能已经对服务端进行了数据的操作,为了防止这种情况,首先发起预检请求,来检测是否能够发起真正的请求。(这里能知道,简单请求是没必要进行预检的,因为浏览器认为,简单请求是安全的,是被用户允许的)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

No branches or pull requests

3 participants