首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Heroku上的Django应用程序中启用CORS

在Heroku上的Django应用程序中启用CORS
EN

Stack Overflow用户
提问于 2017-01-05 10:02:47
回答 1查看 2K关注 0票数 1

我正在尝试使用django-cors-middleware在我托管在Heroku上的基于Django的API中实现跨域资源共享。我遵循了settings.py中指定的设置,即:

代码语言:javascript
复制
INSTALLED_APPS = [
    ...
    'corsheaders',
]

MIDDLEWARE_CLASSES = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

(我之所以展示'django.middleware.clickjacking.XFrameOptionsMiddleware',是因为我在另一篇文章中读到,django-cors-middleware不能与clickjacking中间件一起工作,但这两种方式似乎都不能工作。)

我正在使用https://resttesttest.com进行测试。当我发出请求时,它会输出:Oh no! Javascript returned an HTTP 0 error. One common reason this might happen is that you requested a cross-domain resource from a server that did not include the appropriate CORS headers in the response

EN

回答 1

Stack Overflow用户

发布于 2017-01-05 14:43:59

@ChirdeepTomar,是的,在本地测试时这是有效的。我不知道为什么它在resttesttest.com上不起作用。有一个非常棒的小程序,可以在本地测试CORS,我发现了here,为了方便起见,我复制了下面的内容:

代码语言:javascript
复制
<html> 
<head>     
<title>Test for CORS</title>     
<script type="text/javascript"> 
function testcors(url){             
    var createCORSRequest = function(method, url) {                 
        var xhr = new XMLHttpRequest();                 
        if ("withCredentials" in xhr) {                     
            xhr.open(method, url, true);                 
        } 
        else if (typeof XDomainRequest != "undefined") {                                       
            xhr = new XDomainRequest();                     
            xhr.open(method, url);                 
        } 
        else {                                          
            xhr = null;                 
        }                 
        return xhr;             
    };              
    var method = 'GET';             
    var xhr = createCORSRequest(method, url);              
    xhr.onload = function() {                            
        thendothis(true); //success            
    };              
    xhr.onerror = function() {                 // Error code goes here.                 
        thendothis(false);             
    };              
    xhr.send();             
    return iscors;         
}          
function thendothis(iscors){             
    var resptxt = "No";             
    if (iscors) { resptxt = "Yes"; }             
    document.getElementById("res").innerHTML = resptxt;        
}          
function runtest(frm){             
    testcors(frm.url.value);         
}     
</script> 
</head> 
<body>     
    <form>         
        URL: <input type="text" name="url" id="url" style="width:500px" /></br>         
        <input type="button" value="Test if CORS" onclick="runtest(this.form)" />     
    </form>     
    <div>URL is CORS: <span id="res"></span></div> 
</body> 
</html>   
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41476242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档