【发布时间】:2017-06-15 17:51:15
【问题描述】:
我在另一个网站上有一个 iframe。我可以控制该 iframe 的代码,但不能控制网站本身,它的来源不是我的网站(它是从另一个域加载的)。在 iframe 中,对其他网站进行了几次 ajax API 调用,并对我自己基于 Django 构建的网站发出了一个 GET 请求。但是,此调用返回代码 0 的错误。该请求甚至没有记录在 network 浏览器选项卡中(我使用 Firefox)。
在 Django 网站上运行同样的程序效果很好,所以很明显问题出在跨域请求中。我添加并启用了django-cors-headers 模块,但它仍然不起作用。抛出了同样的错误,但实际上什么也没发生。
我的 Django 版本是 1.10.5。通过 pip 为 Python3.5 安装的模块。整个过程都在 VPS 上运行。设置:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'install',
'account',
'corsheaders',
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ORIGIN_ALLOW_ALL = True
CSRF_TRUSTED_ORIGINS = (
'https://widget.insales.ru',
)
请求:
$.ajax({
type: "GET",
url: "http://project_url/scripty",
data: {
"data": JSON.stringify(r)
},
dataType: 'text/plain',
success: function(data){
console.log(JSON.stringify(r));
console.log("Success!");
console.log(data);
},
error: function(xhr, status, errorThrown){
console.log(JSON.stringify(r));
console.log("Status: " + status + "\nThrown: " + errorThrown);
console.log(xhr);
}
});
不确定要添加什么,所以在 cmets 中询问。
是我做错了什么还是我对事物的理解有问题?
【问题讨论】:
标签: javascript python ajax django iframe