我想弄清楚什么是科尔。 在MDN中它描述为:
资源在请求来自与第一个资源本身所服务的域不同的域的资源时,会发出跨源HTTP请求。
我不确定我知道什么是网络资源。 另外,据我所知,cors允许我通过将域放在标题中来使用我域中其他域的Web资源,但这只是约定或更多内容吗?
答案 0 :(得分:0)
让我试着简短解释一下。
网络资源
网络资源是您在网络上请求的任何内容。这可能是一个图像,一个json有效载荷,一个pdf,一个html页面等等。除此之外没有更多。
<强> CORS 强>
当您想在浏览器中执行ajax请求时(通常来自javascript),您通常只能在同一域上发出对资源(url)的请求。例如。 www.x.com
只能从www.x.com
请求资源。假设您在www.x.com
上有一个网页,希望从api.x.com
获取资源。除非服务器(api.x.com
)启用了CORS,否则这是不可能的。
那它是如何运作的?嗯,流程是这样的(简化很多)。
当您执行ajax请求时,例如对json有效负载的GET请求时,浏览器会看到此情况并向服务器发出OPTIONS请求,在该请求中,它会说明www.x.com
Origin
标头)。然后服务器应该回复一个带有标题的响应,表示www.x.com
可以执行GET请求。服务器通过添加标头Access-Control-Allow-Origin: www.x.com
来完成此操作。如果允许的原点与请求中的原点匹配,则浏览器发出GET请求,服务器返回json有效负载。如果允许的原点不匹配,浏览器将拒绝执行请求并在控制台中显示错误。
如果您正在使用客户端(www.x.com
),并且正在使用 - 请说jquery - 您不必执行任何操作。一切都自动发生。
如果您正在使用服务器(api.x.com
),则必须启用CORS。如何做到这一点有很大的不同,但http://enable-cors.org/server.html有一个很好的指导如何在不同的服务器类型上做。他们还有一些关于它如何工作的深入指南。具体来说,你可能想看看https://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/
我希望这能帮到你一点