와 플라스크-편안한 API에 요청을 할 수 없다, 나는 백본 응용 프로그램에 웹 클라이언트를 변환 할 노력하고있어. 그러나 API에 간단한 요청을 보낼 수는 없습니다. 우리의 웹 서비스는 python으로 쓰여졌습니다. 앱은 API에 OPTIONS 요청 만합니다.난 그냥 backbone.js를 배우기 시작 backbone.js
가 나는 백본 자체하지만 서버와의 문제가 아니에요 생각 (그것은 GET 요청을해야한다). 왜냐하면 내가 https://api.github.com
으로 URL을 변경하고 /gists/1
으로 끝점을 변경하기 때문에 매력처럼 작동합니다. 비슷한 문제에 대한 몇 가지 stackoverflow 질문을 읽었습니다. stackoverflow 사용자가 제안한대로 CORS 문제라고 생각하고 내 콘솔에서만 미리 채워진 요청을 봅니다.
그러나, 나는 이미 내 서버에 *
에 Access-Control-Allow-Origin
을 설정했습니다. 또한 localhost에서 서버를 실행하고 localhost에서 요청을하면 작동하지 않습니다. (포트가 다른,하지만 포트가 다른 경우가 크로스 사이트라고합니다 있는지 확실하지 않습니다)
나는 잘 내 서버에 JQuery와 아약스 요청을 할 수 있습니다. 단지 백본과 함께 작동하지 않습니다. 여기
는 지금까지$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
options.url = 'http://localhost:5000' + options.url;
});
var Complaints = Backbone.Collection.extend({
url: '/complaint/recent'
});
var ComplaintList = Backbone.View.extend({
el: ".content",
render: function() {
var that = this;
var complaints = new Complaints();
complaints.fetch({
success: function(res) {
console.log(res);
}
});
// console.log("hede2");
// return this.$el.html("hede2");
}
});
cList = new ComplaintList();
// routers
var Router = Backbone.Router.extend({
routes: {
"": "home"
}
});
var router = new Router();
router.on("route:home", function() {
cList.render();
});
Backbone.history.start();
백본 응용 프로그램이며,이 플라스크-편안한에서 엔드 포인트입니다.
class ComplaintRecent(restful.Resource):
def get(self):
category = request.args.get('category', '')
sinceid = request.args.get('sinceid', '')
slug_city = request.args.get('slugcity', '')
return ccomp.get_recent_complaints(category, sinceid, slug_city)
아마도 서버 응답은 문제가 있는지 식별 할 수 있습니다.
00:28 ~ $ curl -I -X OPTIONS http://api.enforceapp.com/complaint/recent
HTTP/1.1 200 OK
Server: nginx/1.2.1
Date: Thu, 30 Jan 2014 22:31:51 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
Allow: HEAD, GET, OPTIONS
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE
Access-Control-Allow-Credentials: true
백본을 학습하는 첫날에 길을 잃었습니다. 나는 같은 질문을 freenode에서했지만 대답을 얻을 수 없었습니다.
가능한 문제를 해결할 수있는 자료가 있다면 정말 기쁩니다.
'Access-Control-Allow-Headers : X-Requested-With'를 추가해야 할 수도 있지만 100 % 확신 할 수는 없습니다. 인터넷은'Allow-Origin : *'을 사용하면 모든 것이 작동하도록 할 때'Origin' 헤더의 내용으로 응답 할 것을 제안합니다. –
정의하려면 문제가있는 서버 측 또는 클라이언트 측에서'.fetch' 호출시 클라이언트로부터 서버로 보내지는 원시 요청 데이터를 확인해야합니다. 이 정보를 제공해 주시겠습니까? – zeliboba