我是堆叠溢出的新手,希望我在第一篇文章中不会犯任何错误。
我收到错误: Access-Control-Allow-Origin不允许使用Origin ..
从我在其他类似帖子中看到的内容来看,它是一个跨域问题。 但事情是这样的: case1:当启动我的本地html文件,包含ajax查询到服务器A时,我没有pb。 case2:当打开这个相同类型的html时,这次由django本地服务器B服务,然后我有一个pb。
有人能解释为什么case2被视为跨域? 服务器B在我的机器上,为什么案例2不会被认为与case1相同?
非常感谢
部分代码:
案例1 :我通过html页面中的ajax在我的家庭网络上访问服务器A 。
如果我用这样的ajax查询构建一个html页面:
check_user_status = function(userID){
url = "http://blabla/api" + userID;
var getting = $.get(url);
getting.done(function( data ) {
status = data.result.status;
$( "#result" ).append( "association... " + status + "<br>");
if (status!="pending"){
clearInterval(timer);
clearTimeout(endRequest);
get_challenge();
}
});
}
然后我可以看到请求正在发送,我可以分析json响应。 在那种情况下,我注意到GET查询没有&#34;起源标题&#34;类似的POST查询有origin = file://
此服务器A未由我编码,我无法更改。
案例2:我通过Django创建了 Web服务器B 。此Web服务器提供了一个带有js的html页面,其中存在相同的ajax查询。 这次发送到服务器A的ajax查询但是我无法获得响应并且浏览器引发了错误:
Origin http://127.0.0.1:8000 is not allowed by Access-Control-Allow-Origin
我注意到在这种情况下,GET原点设置为:
> http://127.0.0.1:8000
从昨天开始,我尝试在django服务器B端玩一些中间件应用程序......但没有成功
希望它澄清一下 再次感谢
答案 0 :(得分:1)
样品申请:
$.ajax({
url: "http://localhost:8080",
type: "POST",
crossDomain: true,
accept: "application/json",
contentType: "application/json; charset=UTF-8",
data: JSON.stringify(jsonObject),
dataType: "json",
success: function (response) {
var resp = JSON.parse(response)
alert(resp.status);
},
error: function (xhr, status) {
alert(status);
}
});
样品响应:
import web
import json
class index:
def OPTIONS(self):
web.header('Content-Type', 'application/json')
web.header('Access-Control-Allow-Origin', '*')
web.header('Access-Control-Allow-Methods', 'POST, GET')
web.header('Access-Control-Allow-Headers', 'origin, x-csrftoken, content-type, accept')
return web.data()
def POST(self):
web.header('Content-Type', 'application/json')
web.header('Access-Control-Allow-Origin', '*')
return json.dumps('{"status" : "success"}')
def GET(self):
return json.dumps("{status : 'success'}")