admin 管理员组

文章数量: 1184232


2024年1月17日发(作者:sql continue语句)

前端vue解决跨域的方法

在开发过程中,经常会遇到跨域问题,特别是前后端分离的情况下,前端使用vue作为框架开发,后端使用其他语言如Java、Python等,此时跨域问题就会变得非常突出。下面介绍几种前端vue解决跨域的方法。

1. 使用代理

在文件中配置代理,将前端请求发送到代理服务器,再由代理服务器转发到后端服务器。这样前端请求的域名和后端响应的域名就一致了,就能够避免跨域问题。配置如下:

```

s = {

devServer: {

proxy: {

'/api': {

target: 'localhost:8080', // 后端接口地址

changeOrigin: true, // 是否跨域

pathRewrite: {

'^/api': '/' // 这里可以理解为一个重定向,将请求地址中的/api替换为/

}

}

}

- 1 -

}

}

```

2. JSONP

JSONP是一种跨域方式,利用了script标签的跨域特性。前端通过script标签请求后端数据,后端将数据包装成JS代码返回,前端再解析JS代码获取数据。因为script标签没有跨域限制,所以可以解决跨域问题。代码如下:

```

let script = Element('script')

=

'localhost:8080/api/getData?callback=callback'

Child(script)

function callback(data) {

(data)

}

```

3. CORS

CORS是一种服务器端跨域解决方案。后端服务器在响应请求时添加Access-Control-Allow-Origin头部,允许指定的域名访问。前端发送请求时,浏览器会自动添加Origin头部,告诉服务器请求来自哪个域名。如果服务器允许该域名访问,就会返回数据,否则会拒 - 2 -

绝请求。代码如下:

```

((req, res, next) => {

der('Access-Control-Allow-Origin', '*')

next()

})

```

4. WebSocket

WebSocket是一种双向通信协议,可以在客户端和服务器之间建立持久连接,实现实时通信。因为WebSocket是基于TCP协议的,所以不受同源策略限制。前后端可以通过WebSocket建立连接,实现跨域通信。代码如下:

前端:

```

let ws = new WebSocket('ws://localhost:8080')

= (event) => {

('连接成功')

}

age = (event) => {

()

}

```

- 3 -

后端:

```

const WebSocket = require('ws')

const wss = new ({ port: 8080 })

('connection', (ws) => {

('连接成功')

('欢迎连接')

})

```

以上就是几种前端vue解决跨域的方法,开发过程中应根据需求选择最适合的解决方案。

- 4 -


本文标签: 跨域 请求 服务器 域名 问题