laravel - Access-Control-Allow-Headers 不允许请求 header 字段 X-CSRF-TOKEN

标签 laravel vue.js embed axios

我正在使用 vue 和 axios 向 embed.rock 发出获取请求。

axios({
  method: 'get',
  url: 'https://api.embed.rocks/api?url=' + this.url,
  headers: {
      'x-api-key': 'my-key'
  }
})

当我使用 CDN 通过内联脚本获取 vue 和 axios 时,我的代码工作正常并且我得到了响应。

当我使用外部脚本引用已安装的 vue 和 axios 脚本时,代码不再运行并且出现以下错误:

Failed to load https://api.embed.rocks/api?url=https://www.youtube.com/watch?v=DJ6PD_jBtU0&t=4s: Request header field X-CSRF-TOKEN is not allowed by Access-Control-Allow-Headers in preflight response.

当我点击控制台中的错误时,它只会将我带到:

<!DOCTYPE html>

最佳答案

Laravel 正在设置全局配置,以在 bootstrap.js 文件的请求 header 中自动包含 X-CSRF-TOKEN

let token = document.head.querySelector('meta[name="csrf-token"]');
if (token) {
    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
    console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}

因此,如果要移除token,可以这样实现:

var instance = axios.create();
delete instance.defaults.headers.common['X-CSRF-TOKEN'];

instance({
    method: 'get',
    url: 'https://api.embed.rocks/api?url=' + this.url,
    headers: {
        'x-api-key': 'my-key'
    }
});

关于laravel - Access-Control-Allow-Headers 不允许请求 header 字段 X-CSRF-TOKEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51199077/

相关文章:

php - Laravel 动态创建多个数据库的方法

javascript - 在 vuejs 2.0.0 中选择的占位符

php - 如何在 blade.php 中使用 vue 获取字段的旧值

vue.js - 在 vuejs 中处理模式 : v-model or bind each element to value?

google-analytics - 嵌入 API 使用自定义组件无法显示

html - <embed> 标签不是已经存在一段时间了吗?

php - Laravel 5.4 Cookie 值

php - 在 Views laravel 上使用 carbon

jquery - Vimeo 嵌入 Cycle2

laravel - 区分 Web 路由调用与 API 路由调用?