因此,我在apache服务器上使用传统的cgi脚本运行两个应用程序foo.com和bar.com。我从foo到bar发出AJAX请求。 该请求被禁止执行,但是由于apache服务器未添加任何CORS标头,因此浏览器表示请求失败。
MDN上的CORS文档说明,浏览器Javascript不知道失败的细节,只知道响应失败。
我的问题是,响应对象是否包含我的cgi脚本返回的响应,并且浏览器只是选择将其显示为错误,因为它找不到Access-Control-Allow-Origin标头?
从我对响应对象的检查来看,似乎apache服务器根本没有从cgi脚本的输出发送响应。
目前尚不清楚,谁负责在此处包含响应:
是Apache服务器
是提取/ XMLHTTP api
注意:我使用jquery进行AJAX调用
答案 0 :(得分:1)
CORS响应标头如何阻止浏览器JavaScript访问响应对象?
他们没有。您的JS无法访问响应数据是默认行为。 CORS标头可以授予权限,默认情况下会被拒绝。
相同来源策略是由浏览器实现的。服务器对此一无所知(除了可能被明确配置为在响应中发送CORS标头之外)。
浏览器收到HTTP响应,确定未授予权限,并生成一个响应对象,说明它提供给JavaScript程序的内容。