以这种方式使用$ .post时收到错误POST https://thewebsite.com 400 (Bad Request)
:
$.post("https://website.com/blabla",
{
domain: "infoinfo.com",
room: "someInfo",
application: "someInfo",
ident: "someInfo",
},
function (data,status) {
alert("Data: " + data + "\nStatus: " + status);
});
我尝试在我的路线中设置res.header('Access-Control-Allow-Origin', "*");
,但这不起作用。
关于如何解决这个问题的任何想法?
Ps。:我发布的服务器是服务网站(xirsys.com),我很确定它们已经允许外部域名。如果我找不到解决方案,我会在白天联系他们(我正在使用他们建议的jQuery帖子:/
答案 0 :(得分:0)
这是由于同源策略。作为安全措施的所有浏览器都不允许任何跨域请求。
http://en.wikipedia.org/wiki/Same-origin_policy
与您的情况类似,您将从其他域发布到thewebsite.com域。解决方法是使用jQuery中的jsonp(服务器应该支持json填充)。
查看这些网站以获取更多信息
http://www.jquery4u.com/json/jsonp-examples/
http://en.wikipedia.org/wiki/JSONP
http://stackoverflow.com/questions/6871021/how-to-enable-cross-domain-request-on-the-server
答案 1 :(得分:0)
尝试将此添加到您的AJAX调用中:
contentType: "application/json; charset=utf-8",
dataType: "json"
另一个原因可能是因为相同的原产地政策:
在计算中,相同的原始政策是一个重要的安全概念 对于许多浏览器端编程语言,例如 JavaScript的。该策略允许在源自页面上运行的脚本 从同一个站点访问彼此的方法和属性 没有具体的限制,但阻止访问大多数方法和 不同网站上页面的属性。
您可以从MDN docs找到有关此问题的更多信息,或者在Google上就此主题进行一些研究。
您可以尝试使用$.axax()
,如下所示:
$.ajax({
type: 'POST',
url: "https://website.com/blabla",
data: {
domain: "infoinfo.com",
room: "someInfo",
application: "someInfo",
ident: "someInfo"
},
dataType: "json",
contentType: "application/json",
success: function (e) {
alert("Data: " + data + "\nStatus: " + status);
}
});
答案 2 :(得分:0)
样品申请:
$.ajax({
url: "http://yoururl",
type: "POST",
crossDomain: true,
data: JSON.stringify(somejson),
dataType: "json",
success: function (response) {
alert("success");
},
error: function (xhr, status) {
alert("error");
}
});
PYTHON的样本回应:
response = HttpResponse(json.dumps('{"status" : "success"}'))
response.__setitem__("Content-type", "application/json")
response.__setitem__("Access-Control-Allow-Origin", "*")
return response
答案 3 :(得分:0)
我发布的链接实际上并不好。我使用的服务更新了其API中的链接以反映正确的链接。