gpt4 book ai didi

Javascript不会从django进行跨域请求

转载 作者:行者123 更新时间:2023-12-02 18:41:11 25 4
gpt4 key购买 nike

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

<!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>

最佳答案

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

    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));
}

:D

关于Javascript不会从django进行跨域请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16825891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com