我有一些看起来像的JavaScript:
$(document).ready(function() {
var csrftoken = getCookie();
$.ajaxSetup({
cache : false,
data : null,
beforeSend : function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && sameOrigin(settings.url)) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
});
我有一些看起来像的JavaScript:
jQuery.ajax({
external : true,
type : "GET",
url : url,
datatype : "json",
async : true,
error : function( jqxhr, textStatus, errorThrown ) {
alert("error");
console.log(url);
console.log(jqxhr);
console.log(textStatus);
console.log(errorThrown);
},
success : function(data) {
if (data.status == "OK") {
// do stuff;
} else {
alert("Error: Google Directions API returned the status code " + data.status);
}
}
});
url
是外部网址。它向Google Directions询问了一些方向。如果我只是用我的浏览器去那里,我会得到一些不错的json。
但如果上面的代码执行,我得到405和以下消息"Origin http://127.0.0.1:8000 is not allowed by Access-Control-Allow-Origin"
我安装了'django.middleware.csrf.CsrfViewMiddleware'
。
我正在做很多谷歌搜索,以找出如何解决这个问题,但到目前为止我找不到问题。
我的问题是:我如何让它发挥作用?
在此期间我会继续寻找答案......
我试过的东西(各种组合):
crossDomain: true
我已经确认没有为违规网址
调用行xhr.setRequestHeader("X-CSRFToken", csrftoken);
答案 0 :(得分:0)
检查您的设置文件中是否有正确的值,例如:
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = ('127.0.0.1:8000', )