构造Response对象时传入的url参数不生效,url字段为空如何解决?
问题原因
Response()构造函数的初始化参数init本身不支持传入url、ok字段,你额外传入的这两个属性会被构造函数直接忽略。ok是 Response 的只读计算属性,会自动根据status值是否处于200~299区间返回布尔值,不需要手动传入。url是 Response 的只读属性,默认由浏览器根据实际请求地址赋值,手动给构造函数传无效,直接对实例的url属性赋值也会报错。
正确设置方法
你可以通过 Object.defineProperty 手动改写只读的 url 属性,示例代码如下:
var myBlob = new Blob(); var init = { status: 200, statusText: "SuperSmashingGreat!" }; var myResponse = new Response(myBlob, init); // 手动设置url属性 Object.defineProperty(myResponse, 'url', { value: "https://mywebsite.com/download?lang=en", writable: false // 保持只读特性,可选 }); // 如果需要修改type为basic也可以用同样方法 Object.defineProperty(myResponse, 'type', { value: "basic" }); console.log(myResponse);
内容的提问来源于stack exchange,提问作者E235
相关产品推荐
相关产品推荐

