使用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驗證