{site_name}

{site_name}

🌜 搜索

HTTP中的Access-Control-Request-Headers是一个用

前端 𝄐 0
HTTP中的Access-Control-Request-Headers是一个用于跨域资源共享(CORS)的HTTP请求头部字段,它指示服务器所允许的客户端请求头字段。当浏览器发起一个跨域资源请求时,如果该请求包含了自定义请求头字段,则需要在预检请求(OPTIONS)中加入Access-Control-Request-Headers来询问服务器是否允许这些请求头字段,只有得到服务器的允许后才能正式发送实际请求。

例如,一个使用XMLHttpRequest对象发送跨域资源请求的示例代码:


const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://example.com/api/data');
xhr.setRequestHeader('Authorization', 'Bearer xxxxxxxx'); //设置自定义请求头字段
xhr.setRequestHeader('Content-Type', 'application/json'); //设置另一个自定义请求头字段

xhr.onload = function() {
console.log(xhr.responseText);
}

xhr.send();


上述示例中,我们设置了两个自定义请求头字段:Authorization和Content-Type。因为这是一个跨域资源请求,所以在发送实际请求之前,浏览器会先发送一个预检请求(OPTIONS请求),并在其中带上Access-Control-Request-Headers头部字段:


OPTIONS /api/data HTTP/1.1
Host: example.com
Origin: https://mywebsite.com
Access-Control-Request-Method: GET
Access-Control-Request-Headers: authorization,content-type


服务器收到这个预检请求后,如果允许客户端的这两个请求头字段,就会返回如下的响应头:


HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://mywebsite.com
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: authorization,content-type


这个响应中的Access-Control-Allow-Headers头部字段告诉浏览器,服务器允许客户端使用Authorization和Content-Type这两个请求头字段。只有在得到这个响应后,浏览器才会发送实际的GET请求,并带上这两个自定义请求头字段。