Ajax怎么解决No 'Access-Control-Allow-Origin 写出js代码
时间: 2023-10-28 17:57:57 浏览: 99
当在使用 Ajax 发送跨域请求时,如果服务器未设置正确的跨域头部,浏览器会阻止请求并报错 "No 'Access-Control-Allow-Origin'"。要解决这个问题,可以使用以下两种方法之一:
1. 通过后端设置 CORS 头部:
在服务器端代码中,设置响应头部 Access-Control-Allow-Origin,允许特定的源进行跨域访问。例如,在 PHP 中可以添加如下代码:
```php
header('Access-Control-Allow-Origin: http://example.com');
```
这样,只有来自 http://example.com 的请求才能成功访问该服务器的资源。
2. 使用代理服务器:
可以通过在自己的服务器上设置代理来绕过跨域限制。你可以在后端创建一个接口,接收前端发送的请求并将其转发到目标服务器上,并将响应返回给前端。这样,前端实际上是与自己的服务器通信,而不是直接与目标服务器通信,避免了跨域问题。
以下是使用原生 JavaScript 进行 Ajax 请求的示例代码(假设使用第一种方法解决跨域问题):
```javascript
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/api/data', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
// 在这里处理响应数据
} else {
console.error('请求失败:', xhr.status);
}
}
};
xhr.send();
```
注意替换 `http://example.com/api/data` 为你实际请求的 URL。此外,如果需要发送 POST 请求,可以使用 `xhr.open('POST', url, true);` 并在 `send()` 方法中传递请求体数据。
阅读全文