我正在编写一个vue应用程序,使用axios将数据发布到由laravel支持的API . API具有POST路由,用于创建资源 . 我有CORS设置,允许成功获取数据 . 但是,当我尝试POST数据时,网络选项卡显示一个OPTIONS请求,没有返回任何内容,也没有POST请求 .

使用axios:POST请求使用: axios.post(url);

但实际上没有发出POST请求,只有OPTIONS请求: axios.post(url,data) .

我做了一个简单的api,并且没有类似的问题,所以我假设这是特定的laravel?

没有服务器日志错误,laravel日志也没有显示任何错误 . 浏览器控制台中的错误是: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://api/api/zones/save. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

UPDATE

这些是作为请求发送的标头:

Host: apiurl
User-Agent: ....
Accept: text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Origin:null
DNT: 1
Connection: keep-alive

我了解飞行前的情况,但是我用slim制作的API使用相同的axios代码通过了飞行前,并提出了发布请求 . 我不确定为什么laravel API没有这样做 .

UPDATE 2 这些是OPTIONS响应的 Headers

Server  nginx/1.10.3 (Ubuntu)
Content-Type    text/html; charset=UTF-8
Transfer-Encoding   chunked
Connection  keep-alive
Allow   GET,HEAD,POST
Cache-Control   no-cache, private
Date    Fri, 03 Nov 2017 20:46:47 GMT
Content-Encoding    gzip

这是我用于laravel中间件的代码:

public function handle($request, Closure $next)
    {
        return $next($request)
            ->header('Access-Control-Allow-Origin', '*')
            ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
       ->header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization')
        ;
    }
}

我将此代码包含在'api'键下的内核中