xhr.setRequestHeader在Firefox中不起作用但在IE中工作?

时间:2013-02-21 10:27:24

标签: c# asp.net jquery

这里我通过jquery ajax调用传递一个http请求头值。它只适用于IE而不能在Firefox中工作。当代码中有xhr.setRequestHeader时,在Firefox中没有发生ajax调用本身

var Call = function () {
$.support.cors = true;
var input = {
             RefId: "111", LoginId: "222", Id: "33", FirstName: "aaa", LastName: "bbb"
            };
var url = document.URL;
$.ajax({
            type: "POST",
            beforeSend: function (xhr) {
            xhr.setRequestHeader("URL", url);
            },
            url: "http://localhost:40780/Service.svc/Insertion",
            data: JSON.stringify(Input),
            contentType: "application/json",
            dataType: "json",
            success: function (response) {
            alert(response);
            },
            error: function (xhr, status, error) {
            }
        });
    }

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我想我的原因可以通过客户端和服务器处理CORS和预检请求的方式在这里找到:

http://www.html5rocks.com/en/tutorials/cors/

  

来自JQuery的CORS

     

JQuery的$ .ajax()方法可用于制作常规XHR和CORS   要求。关于JQuery实现的一些注意事项:

     

JQuery的CORS实现不支持IE的XDomainRequest对象。但是有一些JQuery插件可以实现这一点。看到   http://bugs.jquery.com/ticket/8283了解详情。       如果浏览器支持CORS,则$ .support.cors布尔值将设置为true(在IE中返回false,请参阅上面的项目符号)。这个可以   快速检查CORS支持。

  headers: {
    // Set any custom headers here.
    // If you set any non-simple headers, your server must include these
    // headers in the 'Access-Control-Allow-Headers' response header.
  },

希望这会有所帮助