Рассмотрите очень простой пример использования XMLHttpRequest
.Почему браузер разрешает xorigin POST, но не PUT?
Следующие сообщения должным образом (вы можете увидеть его на вкладке сети или направляя ваш браузер http://requestb.in/yckncpyc
), хотя он выдает предупреждение на консоль
XMLHttpRequest не может загрузить http://requestb.in/yckncpyc. Нет Заголовок «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе . Поэтому исходный 'null' не допускается.
const method = "POST"
const req = new XMLHttpRequest() \t
req.open(method, 'http://requestb.in/yckncpyc')
req.send("foobar")
console.log("sent")
req.addEventListener('load', function() { console.log(req.status, req.response) })
Конечно. Я понимаю. Я не понимаю, почему просто изменение глагола, используемого для PUT
, приводит к чему-то совершенно другому. Отправлен запрос является OPTIONS
предполетной запрос и выводит
XMLHttpRequest не может загрузить http://requestb.in/yckncpyc. Ответ на предполетный запрос не проходит проверку контроля доступа: Нет Заголовок «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе . Поэтому исходный 'null' не допускается.
const method = "PUT"
const req = new XMLHttpRequest() \t
req.open(method, 'http://requestb.in/yckncpyc')
req.send("foobar")
console.log("sent")
req.addEventListener('load', function() { console.log(req.status, req.response) })
Почему браузер * рассматривать их по-разному? Это похоже на то, что было бы сделано для обеспечения безопасности, но это действительно не имеет смысла, так как злоумышленник всегда может использовать POST вместо PUT.
Так в чем же тут логика?
- Пытался это в Chrome 52, Safari 9.1.2
Хмм ... Где этот spec'ed? Я не вижу ничего об этом в спецификации (https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6). И в этом отношении, что же такое рассуждение? –
@GeorgeMauer answer extended - [вот статья MDN по этой теме.] (Https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS) – Pointy
Хм ... так это один из тех вещи, а не спецификации, но браузеры все равно? –