vue thinkphp6跨域
时间: 2023-08-20 08:04:45 浏览: 112
vue实现跨域的方法分析.docx
在Vue和ThinkPHP 6中实现跨域请求可以通过以下步骤完成:
1. 在ThinkPHP 6项目中,在`config`目录下找到`cors.php`文件(如果不存在则新建),并添加以下配置:
```php
<?php
// config/cors.php
return [
// 允许的域名列表,可以使用通配符 *
'allowed_origins' => ['*'],
// 允许的请求方法列表
'allowed_methods' => ['GET', 'POST', 'PUT', 'DELETE'],
// 允许的请求头列表
'allowed_headers' => ['*'],
// 是否允许发送 Cookie
'allow_credentials' => false,
// 预检请求的有效期,单位为秒
'max_age' => 0,
];
```
这里配置了允许任意域名的跨域请求,并且允许常用的请求方法和请求头。
2. 在`public`目录下找到`index.php`文件,在文件开头添加以下代码:
```php
<?php
// public/index.php
// 添加以下代码
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
// ...
// 创建应用实例
$app = \think\App::getInstance();
// ...
```
这里设置了响应头,允许任意域名的跨域请求,并允许常用的请求方法和请求头。
3. 在Vue项目中,可以使用axios库发送跨域请求。在需要发送跨域请求的地方,例如Vue组件中,可以这样使用:
```javascript
import axios from 'axios';
// ...
axios.get('http://example.com/api/data', {
// 可选:设置请求头
headers: {
'Content-Type': 'application/json',
},
}).then(response => {
// 处理响应数据
}).catch(error => {
// 处理错误
});
```
在这个例子中,我们使用了`axios.get()`发送了一个跨域的GET请求,并设置了`Content-Type`请求头。
这样配置后,Vue和ThinkPHP 6之间的跨域请求应该就能正常工作了。记得根据实际需求修改配置,例如允许的域名、请求方法和请求头。
阅读全文