解释:
当一个浏览器请求一个不同源的资源时,如果该资源不支持CORS(跨源资源共享),浏览器会发送一个预检请求,即OPTIONS请求,来确认实际请求是否安全可接受。如果服务器支持CORS,它会返回正确的CORS头部,浏览器会执行实际的请求。
解决方法:
- 服务器端设置正确的CORS头部。例如,在Java中,可以在响应中添加以下头部:
response.setHeader("Access-Control-Allow-Origin", "*"); // 或者指定特定的域名
response.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
response.setHeader("Access-Control-Allow-Headers", "Content-Type");
- 如果是Spring框架,可以在Controller或方法上使用
@CrossOrigin
注解。 - 确保服务器正确处理OPTIONS请求,返回必要的CORS头部。
- 如果是发送到自己控制的服务器,确保服务器正确配置,支持OPTIONS请求。
- 如果不是要求跨域,确保前端请求时使用的URL与页面所在的域相同。
- 对于某些REST客户端库,可能需要进行额外配置以正确处理预检请求。