【发布时间】:2021-04-24 21:41:48
【问题描述】:
我试图通过添加setRequestHeaders 函数if() 和continue; 来覆盖 prototype.js 以避免指定Header:
for (var i = 0; i < requestHeaders.length; i += 2){
if("Connection" === requestHeaders[i] || "Connection" === requestHeaders[i+1])
continue;
this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);
}
在 IE9 上,无需更改 prototype.js 即可正常工作,但在其他浏览器(Chrome、Firefox 等)中会出现标题错误..
感谢您的任何建议和帮助! :)
[编辑]
关于重复:
我找到了这个主题,但它不一样。在重复的主题中有一个可以修改的文件,但我无法修改prototype.js的代码。
[编辑2]
此代码在 1.4.0 中(如标题所示),大约 661-685 行
setRequestHeaders: function() {
var requestHeaders =
['X-Requested-With', 'XMLHttpRequest',
'X-Prototype-Version', Prototype.Version];
if (this.options.method == 'post') {
requestHeaders.push('Content-type',
'application/x-www-form-urlencoded');
/* Force "Connection: close" for Mozilla browsers to work around
* a bug where XMLHttpReqeuest sends an incorrect Content-length
* header. See Mozilla Bugzilla #246651.
*/
if (this.transport.overrideMimeType)
requestHeaders.push('Connection', 'close');
}
if (this.options.requestHeaders)
requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);
for (var i = 0; i < requestHeaders.length; i += 2){
console.log(requestHeaders[i] + " AND " + requestHeaders[i+1]);
//My edition - BEGIN;
if("Connection" === requestHeaders[i] || "Connection" === requestHeaders[i+1])
continue;
//END;
this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);
}
}
谢谢! :)
【问题讨论】:
-
.equals(...)是什么?那肯定不是 Javascript... -
@epascarello 不,不是。在规格中告诉我。
-
哦.. 随便 - 我想用我的修改版本覆盖实际的
prototype.js文件 - 怎么做? :) -
@Tomalak
String.prototype.equals = function(X){ return this.toString()===X; };它可以是有效的 JavaScript。 ;) -
太糟糕了,这不是所发布的内容,OP 正在询问如何更改原始代码。重新开放
标签: javascript