有人能告诉我为什么这个请求未能超过SO政策限制吗?
JS:
var blob = new Blob([req.response], {type: "application/octet-stream"});
req = new XMLHttpRequest();
req.open("POST", ws_path(other_context, 'receive_pkg'), true);
req.onload = function (evt) { alert(req.response); };
req.send(blob);
另一个域上的被调用的PHP页面:
header('Access-Control-Allow-Origin: *');
file_put_contents('log.txt', 'script accessed');
请求确实存在,并且写入了日志,但浏览器会阻止响应。我对同一个脚本的另一个请求不是blob,而是一个普通的post请求,这个响应很好。问题似乎只是blob请求,我不知道为什么或者我正在做什么实际上是禁止的。
[研究工作:当我找到this question时,我对此抱有希望,但根据OP的问题,重复的答案一般只涉及CORS,而不是blob]
答案 0 :(得分:0)
经过大量的挖掘和实验后,我找到了一种解决方法:即将编码从application/octet-stream
更改为application/x-www-form-urlencoded
。
使用前者,即使显式调用的Web服务允许调用者域用于CORS,也会阻止请求。使用后者,允许调用者域通过。
然而,这带来了一个新问题:以这种方式发送的数据,至少对于PHP Web服务,可能会超过max_input_vars
stat。
可以通过.htaccess文件增加它来解决这个问题,如下所示:
php_value max_input_vars 50000000