vue axios跨域post提交不成功,get獲取沒有問題

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章