axios .request(options) .get('http://localhost:8080/data', { withCredentials: true }) .then(function (response) { console.log(response.data); var data = JSON.parse(response.data); console.log(data.TruckNo); console.log(data.Intime); console.log(data.ParkTime); console.log(data.Money); showResult(data); }) .catch(function (error) { console.error(error); }); }为什么还是from origin 'http://localhost:8080' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.
时间: 2024-03-11 18:49:16 浏览: 105
这个错误是因为服务器响应头中的'Access-Control-Allow-Origin'头包含了两个通配符'*',导致浏览器拒绝了这个跨域请求。解决这个问题的方法有两种:
1. 修改服务器端的响应头,确保'Access-Control-Allow-Origin'头只包含一个值,例如:
```
Access-Control-Allow-Origin: http://localhost:8080
```
这样浏览器就会允许来自'http://localhost:8080'的跨域请求。
2. 在发送请求时,设置axios的`withCredentials`选项为true,并且设置请求头中的'Origin'字段为当前域的地址,例如:
```javascript
axios.get('http://localhost:8080/data', {
withCredentials: true,
headers: {
'Origin': 'http://localhost:8080'
}
})
```
这样axios就会在请求中携带当前域的cookie信息和'Origin'字段,服务器就可以根据这些信息判断是否允许该跨域请求。
无论哪种方法,都需要在服务器端进行相应的配置才能解决这个问题。如果服务器端没有设置以上头信息,那么浏览器会阻止该跨域请求,并抛出'CORS policy'错误。
阅读全文