Я получаю сообщение об ошибке POST https://thewebsite.com 400 (Bad Request)
при использовании $.post таким образом:
$.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, как они предположили:/
Ссылка, которую я публиковал, на самом деле не была хорошей. Сервис, который я использую, обновил ссылку в своем API, чтобы отразить правильный.
ЗАПРОС ОБРАЗЦА:
$.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");
}
});
РЕЗУЛЬТАТЫ ОБРАЗЦОВ В ПИТОНЕ:
response = HttpResponse(json.dumps('{"status" : "success"}'))
response.__setitem__("Content-type", "application/json")
response.__setitem__("Access-Control-Allow-Origin", "*")
return response
Попытайтесь добавить это в свой вызов AJAX:
contentType: "application/json; charset=utf-8",
dataType: "json"
Другая причина, возможно, из-за той же политики происхождения:
При вычислении одна и та же политика происхождения является важной концепцией безопасности для ряда языков программирования на стороне браузера, таких как JavaScript. Политикой разрешены сценарии, выполняемые на страницах, происходящих из одного и того же сайта, для доступа к другим методам и свойствам без каких-либо конкретных ограничений, но предотвращает доступ к большинству методов и свойств между страницами на разных сайтах.
Вы можете узнать больше информации об этой проблеме в документах MDN или провести исследование 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);
}
});
Это связано с политикой одного и того же происхождения. Все браузеры в качестве меры безопасности не разрешали бы перекрестные запросы домена.
http://en.wikipedia.org/wiki/Same-origin_policy
Как и в вашем случае, вы отправляете домен thewebsite.com из другого домена. Работа вокруг заключается в использовании jsonp (сервер должен поддерживать json padding) из jquery.
Проверьте эти сайты для получения дополнительной информации.
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