【问题标题】:CORS issue with Vue jsVue js 的 CORS 问题
【发布时间】:2019-10-13 15:44:00
【问题描述】:

我用的是vuejs,地址http://localhost:8000

调用 api 时,出现 CORS 错误。 Sid 未成功请求标头 请求

来自 http://localhost:8080 的域已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

let headers = {
          'Content-Type': 'application/json',
          'Access-Control-Allow-Origin': true,
};

【问题讨论】:

标签: vue.js


【解决方案1】:

三个选项

选项 1. 编辑 Vue.config.js

 module.exports = {
      devServer: {
        proxy: {
          '/api': {
            target: 'http://localhost:8081',
            ws: true,
            changeOrigin: true
          }
        }
      }
    }

选项 2(临时/测试用例)

  1. 在 chrome Eg-Moseif CORS 中使用 Cors 插件
  2. 将您的 chrome 版本降级到 71 以下
  3. 使用 Chromium 或 Canary 浏览器。

选项 3

  1. 查看您的服务器 Cors 是否允许,您可以在服务器上添加 python cors 插件和 java 注释以允许此调用。

【讨论】:

    【解决方案2】:

    你需要创建一个带有代理配置的“vue.config.js”。

    例子:

     module.exports = {
      devServer: {
        proxy: {
          '/api': {
            target: 'http://localhost:8080',
            ws: true,
            changeOrigin: true
          }
        }
      }
    }
    

    【讨论】:

    • 这仅适用于 OP 的本地开发服务器。这也意味着所有请求都必须是相对的/api URL。 localhost:8080是OP的客户端服务,不是API
    • 'ws: true' 代表什么?