【发布时间】:2019-01-23 10:42:51
【问题描述】:
我有一个用 python/flask 编写的 API,我希望只允许几个 URL 访问这个 API。 JavaScript 调用是微不足道的 jQuery,例如:
$.ajax({
url: "http://myApi.com/api/doit",
dataType:'JSON',
success:function(data){
console.log("DEBUG: yeeeeaaaahhh!");
},
error:function(xhr){
console.log("Error occured! status: " + xhr.status + ", text: " + xhr.statusText);
}
});
主要是这里的大多数解决方案都非常令人失望,总是提供设置Access-Control-Allow-Origin : '*' 或开始 chrome 禁用检查。当然可以,但这不是目的。
w3 上的规范说分号分隔的列表应该有效,但它没有。逗号分隔的列表也失败了。
从烧瓶本身有 http://flask.pocoo.org/snippets/56/ 但它不适用于多个 URL。在 cmets 中有一个建议:h.extend([("Access-Control-Allow-Origin", orig) for orig in origin]) 但它仍然不起作用。
我唯一的解决方案是检查代码来源,如果它在我的白名单中,则放入标题Access-Control-Allow-Origin : '*'。这是一种解决方法,但我不太喜欢它。你能提出一个更优雅的解决方案吗?
【问题讨论】: