如何解决“拒绝设置不安全标头:连接”?

时间:2011-08-25 14:05:53

标签: php javascript ajax codeigniter prototypejs

我正在使用Prototype与CodeIgniter结合来提交AJAX请求。我的浏览器是Chrome。我在控制台中收到“拒绝设置不安全标头:连接”的错误。这是Ajax请求行:

new Ajax.Request('/vbs/index.php/signup/get_ratecenters',{method:'POST', evalScripts:true})

我试图将类型设置为同步,但收到了同样的错误。

有人可以协助吗?提前谢谢。

2 个答案:

答案 0 :(得分:4)

prototype.js (1.7.0.0)中只有一个代码片段尝试设置Connection: close标题

if (this.method == 'post') {
  headers['Content-type'] = this.options.contentType +
    (this.options.encoding ? '; charset=' + this.options.encoding : '');

  /* Force "Connection: close" for older Mozilla browsers to work
   * around a bug where XMLHttpRequest sends an incorrect
   * Content-length header. See Mozilla Bugzilla #246651.
   */
  if (this.transport.overrideMimeType &&
      (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
        headers['Connection'] = 'close';
}

如果您使用的是prototype.js的本地副本,则可以将代码片段更改为

if (this.method == 'post') {
  headers['Content-type'] = this.options.contentType +
    (this.options.encoding ? '; charset=' + this.options.encoding : '');

  /* Force "Connection: close" for older Mozilla browsers to work
   * around a bug where XMLHttpRequest sends an incorrect
   * Content-length header. See Mozilla Bugzilla #246651.
   */
  if (this.transport.overrideMimeType &&
      (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
  {
        alert("Yes, this is it.");
            if ( navigator.userAgent.match(/Gecko\/(\d{4})/) ) {
                alert("navigator");
            }
        headers['Connection'] = 'close';
  }
}

看看它是否真的是原因。

答案 1 :(得分:0)

如果您直接在浏览器中加载/vbs/index.php/signup/get_ratecenters会怎样?

I read somewhere online“拒绝设置不安全标头:连接”是警告,无法设置HTTP“连接”标头,但这并不意味着请求将不会被处理,因此可能还有其他内容正在这里?

检查/vbs/index.php/signup/get_ratecenters并确保它返回有效的JavaScript代码。在Chrome控制台中执行该代码,并确保它没有错误......可能这里有一个不同的错误。