首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript不支持来自django的跨域请求

Javascript不支持来自django的跨域请求
EN

Stack Overflow用户
提问于 2013-05-30 08:05:24
回答 1查看 447关注 0票数 0

嗨,这里有一个奇怪的问题。我正在尝试用django提供下面的index.htm文件。当您单击该按钮时,页面(而不是服务器)执行跨域请求。如果我在浏览器中直接加载索引文件,它可以工作。但是,如果我使用django提供它,我会在同一个浏览器(Safari)中得到“试图加载资源时发生错误”。我正在使用(YQL)这个方法来处理跨域请求:http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
<head>
<script type='text/javascript' src="/static/jquery-1.10.0.min.js"></script>
<script type='text/javascript' src="/static/jquery.xdomainajax.js"></script>
<script>
function myFunction()
{
    $.ajax({
        url: 'http://www.google.com',
        type: 'GET',
        success: function(res) {
        var headline = $(res.responseText).text();
            document.getElementById("demo").innerHTML=res;
        },
    beforeSend : function(xhr, settings) {
        xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhr.setRequestHeader("Cache-Control", "no-cache");
        if (!csrfSafeMethod(settings.type)) {
            xhr.setRequestHeader("X-CSRFToken", getCookie("csrftoken"));
        }
    }
    });
}
function csrfSafeMethod(method) {
    // these HTTP methods do not require CSRF protection
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
</script>

</head>
<body>

<button onclick="myFunction()">Click me</button>

<p id="demo"></p>

</body>

</html>
EN

回答 1

Stack Overflow用户

发布于 2013-06-01 02:02:10

在ajax函数中添加以下代码:

代码语言:javascript
运行
复制
    beforeSend : function(xhr, settings) {
        xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhr.setRequestHeader("Cache-Control", "no-cache");
        if (!csrfSafeMethod(settings.type)) {
            xhr.setRequestHeader("X-CSRFToken", getCookie("csrftoken"));
        }
    },

在你的脚本中还有这个函数:

代码语言:javascript
运行
复制
function csrfSafeMethod(method) {
    // these HTTP methods do not require CSRF protection
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}

:D

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16825891

复制
相关文章

相似问题

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