使用vue axios跨域提交数据失败,get获取数据却没有问题
后端已做了跨域处理
header('Access-Control-Allow-Origin:http://localhost:8080');
header('Access-Control-Allow-Headers: Origin, Content-Type, Authorization ,ADMINID, TOKEN ,TIMESTAMP');
当跨域请求post提交数据的时候,发现请求的method变为了options,明明是post提交
网上百度资料:跨域分为 简单跨域请求和复杂跨域请求:简单跨域请求是不会发送options请求的。
把request method:options 变成post,查询文档发现默认发送的是字符串格式,需要将其转化成URL的格式,以&进行拼接。
可以引入qs解决问题
安装
npm install qs
vue中引用
import qs from 'qs'
格式转换
qs.stringify(data)
info为提交的数据对象
这样Request Method 转化为post 。
但又发现控制台提示419错误...
原来我后台用laravel框架,post提交默认有csrf验证
打开文件 app\Http\Middleware\VerifyCsrfToken.php
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
'contactAdd_json',
];
}
这样,post请求 http://域名/contactAdd_json 的接口可以不用csrf验证