无法调用我的 api 抛出错误不允许需要预检的跨域请求
Posted
技术标签:
【中文标题】无法调用我的 api 抛出错误不允许需要预检的跨域请求【英文标题】:Not able to call my api throwing error Disallowed for cross-origin requests that require preflight 【发布时间】:2016-03-02 09:38:20 【问题描述】:嘿,我是 ember 和前端的新手。我的后端是使用 django 设计的。我所有的 api 端点都以“/”结尾(例如:http://example.com/api/feed/).Now,当我从 ember 应用程序调用这个 api 时。它将请求发送到“ http://example.com/api/feed" 并留下结尾" / "。
一些代码sn-p是:
routes.js:
return this.store.findRecord('feed');
模型名称是 feed。
adapter.js:
host:"http://example.com/api",
headers:'authorization:"abc"
控制台中的错误是:
请求被重定向到“http://example.com/api/feed/”,这对于需要预检的跨域请求是不允许的。
所以它正在重定向到正确的 api 端点,但 cors 不允许请求发生。
有没有办法通过 ember 以“/”结尾调用 api。
【问题讨论】:
【参考方案1】:覆盖适配器中的buildURL
方法。 RESTAdapter 示例:
DS.RESTAdapter.extend(
buildURL (modelName, id, snapshot, requestType, query)
return this._super(modelName, id, snapshot, requestType, query) + '/';
)
您也可以重构它以使用 arguments
而不是显式指定每个参数。
【讨论】:
以上是关于无法调用我的 api 抛出错误不允许需要预检的跨域请求的主要内容,如果未能解决你的问题,请参考以下文章
已完成 401 未授权请求被重定向到不允许需要预检的跨域请求
该请求被重定向到“https://..com/site/login?”,这对于需要预检的跨域请求是不允许的
我正在使用 angularjs 和 django-cors-headers 然后给出“这对于需要预检的跨域请求是不允许的。”