ruby-on-rails - Vue 资源被 CORS 策略阻止
问题描述
我知道有一些类似的胎面,但没有一种解决方案可以帮助我。
我正在使用 Ruby on Rails 和 Vue 构建应用程序。目前,我正在尝试获取我的用户的 Spotify 访问令牌。所以我只需要创建一个获取请求并等待响应。
它可以在使用 Rails 创建的视图中完美运行,但不能从我的 Vue 应用程序中运行。
这是我控制台中的错误:
Access to XMLHttpRequest at 'https://accounts.spotify.com/authorize?client_id=261c008xxxxxx52da843b8096d&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Fspotify%2Fcallback&response_type=code&scope=playlist-modify-public+user-read-email&state=5987fec3952e0c46332183c526d0abef2f0d35a13e39694e' (redirected from 'http://localhost:3000/auth/spotify') from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
请求的资源上不存在“Access-Control-Allow-Origin”标头。但是如果我们检查标题:
Vue.http.interceptors.push(function (request, next) {
request.headers.set('Content-Type', 'application/json');
request.headers.set('Access-Control-Allow-Origin', '*');
request.headers.set('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
request.headers.set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');
request.headers.set('X-CSRF-Token', document.getElementsByName('csrf-token')[0].content);
next();
});
我不知道在哪里看,你有什么想法吗?我已经尝试安装 chrome 扩展,允许所有来源在我的服务器端,用 Axios 替换 Vue-resource,用节点安装 cors ...
解决方案
Access-Control-Allow-Origin
应该是响应标头而不是请求标头。您的后端 API 必须设置它。
推荐阅读
- haskell - Haskell - 在 Prelude.sequence 函数的结果之间插入线程处理
- sql - 如何将具有不同值的行转换为不同的列?
- excel - 在文件名字符串中查找第一个“_”
- javascript - this.element 的最接近()不能正常工作
- html - 不使用 !important 覆盖来自 CSS 文件的内联 CSS
- identityserver4 - 增强注册模型
- python - Python 将文本文件读入二维数组并访问数据
- conv-neural-network - 访问 google colab 上的文件
- oauth-2.0 - 使用 keycloak 验证电子邮件的身份验证
- r - R - 使用超出列表长度的双括号进行索引时出错的原因