**跨域请求(Cross-Origin Request)**是指在浏览器端,当前网页发起的请求访问另一个域名下的资源,例如通过Ajax请求跨域API。由于安全策略限制,浏览器会阻止跨域请求,从而导致请求失败。**为了解决跨域问题,可以采用以下几种方法:**
**1. JSONP:通过动态创建script标签,利用script标签不受同源策略限制的特点,在响应中返回JSONP格式的数据。**
```javascript
function jsonp(url, callback) {
const script = document.createElement('script');
script.src = url + '?callback=' + callback;
document.body.appendChild(script);
}
jsonp('https://example.com/api', function(data) {
console.log(data);
});
```
**2. CORS:在服务端设置Access-Control-Allow-Origin头部,允许指定的域名访问API。**
```python
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route('/api')
def api():
return {'message': 'Hello, world!'}
```
**3. 代理:在服务端设置代理服务器,将跨域请求转发到同源的API接口。**
```javascript
fetch('/api', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ message: 'Hello, world!' })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
```