当前位置: 首页 > Web前端 > HTML

Cross-OriginRequests

时间:2023-03-28 19:33:31 HTML

CORS(Cross-OriginResourceSharing)forSAPeCommerceCloudSpartacusUIClientSystems是一个由传输HTTP标头组成的系统,用于确定浏览器是否阻止前端JavaScript代码访问对跨源请求的响应.同源安全策略禁止跨源访问资源。但是CORS使Web服务器能够表明他们希望选择允许跨域访问他们的资源。Access-Control-Allow-Methods指定访问资源以响应预检请求时允许的一种或多种方法。上面的示例使用POST.Access-Control-Allow-Headers来响应预检请求,以指示在发出实际请求时可以使用哪些HTTP标头。上面的示例是content-type.CORS预检请求(preflight)是一个CORS请求,它检查CORS协议是否被理解以及服务器是否知道使用特定的方法和标头。这是一个OPTIONS请求,使用三个HTTP请求标头:Access-Control-Request-Method、Access-Control-Request-Headers和Origin标头。预检请求由浏览器自动发出,一般情况下前端开发者不需要自己发出这样的请求。它发生在请求被限定为“预检”并且对于简单请求被省略时。例如,在发送DELETE请求之前,客户端可能会通过使用预检请求询问服务器是否允许DELETE请求:OPTIONS/resource/fooAccess-Control-Request-Method:DELETEAccess-Control-Request-Headers:origin,x-requested-withOrigin:https://foo.bar.org如果服务器允许,那么它将使用Access-Control-Allow-Methods响应标头响应预检请求,其中列出DELETE:HTTP/1.1204NoContentConnection:keep-aliveAccess-Control-Allow-Origin:https://foo.bar.orgAccess-Control-Allow-Methods:POST,GET,OPTIONS,DELETEAccess-Control-Max-Age:86400可选择使用Access-Control-Max-Ageheader为在同一URL创建的请求缓存预检响应,如上例所示。为了缓存预检响应,浏览器使用与浏览器管理的一般HTTP缓存分开的特定缓存。预检响应永远不会缓存在浏览器的通用HTTP缓存中。以上面的Spartacus系统为例,服务器允许跨域访问: