服务端设置响应头允许特定来源的跨域请求。客户端发起POST请求时,需要在XMLHttpRequest中设置withCredentials属性,并启用CORS支持。
时间: 2024-10-22 14:29:05 浏览: 18
在服务器端,为了处理来自特定源的跨域(Cross-Origin Resource Sharing,CORS)POST请求,你需要在HTTP响应头中添加一些特殊的字段。常见的 CORS 头信息包括:
- `Access-Control-Allow-Origin`:指定哪些域名或URL可以发起跨域请求。例如,你可以设置为`*`表示所有源都可以,也可以是具体的域名,如`http://example.com`。
- `Access-Control-Allow-Methods`:列出允许的HTTP方法,如GET、POST、PUT等。
- `Access-Control-Allow-Headers`:指定允许发送到服务器的请求头,如`Content-Type`、`Authorization`等。
- `Access-Control-Allow-Credentials`:如果设为`true`,意味着允许发送包含敏感信息(如cookie)的跨域请求。
客户端(通常是在JavaScript中)发起POST请求时,需要通过XMLHttpRequest对象来实现跨域。首先,需要在构造函数中将`withCredentials`属性设置为`true`:
```javascript
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
```
然后在`open()`方法中指定POST请求,并加上预期的CORS头部:
```javascript
xhr.open('POST', 'https://api.example.com/endpoint', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify(yourData));
```
在发送请求之前,浏览器会先发送一个预检请求(OPTIONS),检查服务器是否允许该类型的跨域请求。服务器需要配置对OPTIONS请求的支持,通常返回204 No Content状态码,并包含CORS头部信息。
阅读全文