var new_data = 'hello world';
var formData = new FormData();
formData.append("thefile", new_data);
var new_req = new XMLHttpRequest();
new_req.open("PUT", p.href, false);
new_req.setRequestHeader("Content-Type", "multipart/form-data");
new_req.send(formData);
В запросе не следует указывать заголовок Origin. В общем случае на запрос с непустым Origin API отвечает HTTP-кодом 500.
заголовки Origin, которые начинаются со схемы chrome-extension://, просто игнорируются