写几种解决跨域问题的代码
时间: 2023-11-02 11:51:40 浏览: 114
以下是几种常见的解决跨域问题的代码示例:
1. CORS(服务端配置)
在服务端的响应中添加 CORS 相关的响应头,允许来自指定源的跨域请求。
```java
// Java - Spring Boot 示例
@Configuration
public class CorsConfig {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://example.com") // 允许的源地址
.allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的请求方法
.allowedHeaders("*") // 允许的请求头
.allowCredentials(true); // 是否允许发送 cookie
}
};
}
}
```
2. JSONP(前端代码)
通过动态创建 `<script>` 标签来获取跨域数据。
```javascript
function handleResponse(data) {
// 处理响应数据
}
var script = document.createElement('script');
script.src = 'http://example.com/api?callback=handleResponse';
document.body.appendChild(script);
```
3. 代理服务器(服务端代码)
通过服务器端代理转发请求,解决跨域问题。
```javascript
// Node.js - Express 示例
const express = require('express');
const request = require('request');
const app = express();
const API_URL = 'http://example.com/api';
app.get('/api', (req, res) => {
const url = API_URL + req.url;
req.pipe(request(url)).pipe(res);
});
app.listen(3000, () => {
console.log('Proxy server is running on port 3000');
});
```
4. WebSocket(前端代码)
使用 WebSocket 进行跨域通信。
```javascript
// 前端代码
const socket = new WebSocket('ws://example.com/socket');
socket.onopen = function() {
// 连接成功,可以进行通信
socket.send('Hello Server!');
};
socket.onmessage = function(event) {
// 处理接收到的消息
console.log('Received message:', event.data);
};
```
这些示例代码只是简单的演示,实际解决跨域问题时,需要根据具体的应用场景和技术栈选择合适的解决方案。同时,还需注意安全性和适用性等方面的考虑。
阅读全文