从源头上阻止CORs

从源头上阻止CORs,cors,Cors,试图理解CORs 如果我的站点试图向api.yelp.com发出请求,我知道yelp将需要使用accesscontrolallow-origin授权跨源调用。但是,我的同事说还需要一个特殊的配置来允许调用api.yelp.com。如果我阅读了关于CORs的文章,我就看不到关于源站点的任何信息,在本例中是阻止CORs调用的。默认情况下,浏览器会执行此操作,但可以允许它在未经源站特别许可的情况下进行CORs调用。这是正确的,还是我遗漏了什么?对于Ajax请求,只需要在目标服务器上完成 正如您所说,a

试图理解CORs

如果我的站点试图向api.yelp.com发出请求,我知道yelp将需要使用accesscontrolallow-origin授权跨源调用。但是,我的同事说还需要一个特殊的配置来允许调用api.yelp.com。如果我阅读了关于CORs的文章,我就看不到关于源站点的任何信息,在本例中是阻止CORs调用的。默认情况下,浏览器会执行此操作,但可以允许它在未经源站特别许可的情况下进行CORs调用。这是正确的,还是我遗漏了什么?

对于Ajax请求,只需要在目标服务器上完成

正如您所说,
api.yelp.com
需要使用
*
http://example.com
。如果请求包含任何非简单组件(HTTP动词而不是
GET
POST
和/或任何非简单头),则
api.yelp.com
还必须使用相应的
访问控制允许方法
和/或
访问控制允许头
响应头进行响应。但是,这些头也是
api.yelp.com
上配置的一部分,而不是
example.com

也许您的同事正在考虑(CSP),wihch允许页面限制Ajax请求、图像、媒体、脚本和样式的目标来源。默认情况下允许所有来源,但添加CSP时,可以将允许的来源限制为特定的白名单。如果您的站点将CSP白名单用于
connect src
指令,您可能需要将
api.yelp.com
添加到其CSP白名单中

简而言之,
example.com
不需要允许对
api.yelp.com
进行Ajax调用,但它可以通过CSP指令选择拒绝此类调用。(因此,如果这种否认已经存在,你可能需要放松。)