一、nginx配置解决
解决前:
下图是没有处理前端请求报错图
解决中:
在nginx配置文件中添加以下命令
add_header Access-Control-Allow-Origin '*' always;add_header Access-Control-Allow-Headers "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With";add_header Access-Control-Expose-Headers "Authorization";add_header Access-Control-Allow-Methods "DELETE, GET, HEAD, POST, PUT, OPTIONS, TRACE, PATCH";if ($request_method = OPTIONS ) { return 200;}
添加后记得重启nginx服务
解决后:
通过下图可以看出请求成功了,Response Headers请求头也存在我们刚刚设置的值,所以这里就完成了,跨域请求。
二、代码解决
通常在大公司中,我们是没有办法接触到服务器的,那我们又应该要怎么配置跨域请求呢?
这里用的是laravel框架,我们在index.php入口文件中添加以下命令
header('Access-Control-Allow-Origin:*');header('Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONS,PATCH');header('Access-Control-Allow-Headers:Origin, Content-Type, Cookie, Accept, X-CSRF-TOKEN,token,Authorization');header('Access-Control-Allow-Credentials:true');
现在就可以去请求了,可以看到请求成功了
三、Laravel中间件解决
我们知道laravel有中间件,现在我们添加一个处理跨域中间件,创建命令如下:
php artisan make:middleware CrossHttp
生成文件在app->Http->Middleware下
在CrossHttp.php 文件下的handle方法添加以下命令
header('Access-Control-Allow-Origin:*');header('Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONS,PATCH');header('Access-Control-Allow-Headers:Origin, Content-Type, Cookie, Accept, X-CSRF-TOKEN,token,Authorization');header('Access-Control-Allow-Credentials:true');
还要在Kernel.php文件下的$middleware添加CrossHttp文件,实现全局跨域
现在就可以去请求了,可以看到请求成功了
以上三种方法都是可以解决跨域问题,大家还有什么比较好的方法也可以说出来一起分享呢
领取专属 10元无门槛券
私享最新 技术干货