ASP.NET 5 MVC 6 CORS vue.js 请求不允许
Posted
技术标签:
【中文标题】ASP.NET 5 MVC 6 CORS vue.js 请求不允许【英文标题】:ASP.NET5 MVC 6 CORS vue.js request not allowed 【发布时间】:2016-08-25 10:07:24 【问题描述】:我被困在了某事上。我从 chome postman 应用程序测试我的 api,请求如下:
http://localhost:50000/api/user/user_name/machines
它有效。 我开始在 vue.js 中构建前端并尝试以下操作:
getReports()
this.$http
.get('http://localhost:50000/api/user/user_name/machines', (data) =>
this.data = data;
)
.error((err) => console.log(err))
我当然明白
XMLHttpRequest 无法加载 http://localhost:50000/api/user/user_name/machines。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://localhost:8080' 因此不允许访问。
我之前尝试了一些 react.js 并遇到了同样的问题,所以就像我刚刚添加的那样
services.AddCors();
和
app.UseCors(builder => builder.AllowAnyOrigin());
到我的 startup.cs 文件,但这次没有运气。我记得它适用于 react.js。我也可以直接从浏览器获取数据——只需访问这个 url。为什么 vue.js 有问题?
我的 startup.cs 文件: http://pastebin.pl/view/b93c9e2c
【问题讨论】:
它在我删除时有效:Vue.http.headers.common['Authorization'] = 'Bearer' + localStorage.getItem('id_token');但为什么标题是你的问题? A 还添加 builder.AllowAnyHeader();但它没有帮助 你删除的那行在哪里?遇到同样的问题,我快疯了! 【参考方案1】:您遇到了Cross Origin Request (cors) 限制。这通常发生在您使用完全限定的 url 发出与托管文档不同来源的服务器请求时。
在您的示例中,您在请求中使用了http://localhost:50000/api/user/user_name/machines。如果可能,您可以使用 /api/user/user_name/machines 之类的相对路径,以便根据在浏览器中输入的 url 发出请求。这将确保浏览器不会发送预检请求。
【讨论】:
以上是关于ASP.NET 5 MVC 6 CORS vue.js 请求不允许的主要内容,如果未能解决你的问题,请参考以下文章
带有 Vue JS 的 ASP.NET Core 5 从源访问 XMLHttpRequest 已被 CORS 策略阻止
ASP.NET 5:Azure Web 应用 CORS 在延迟后停止工作