Javascript 强制更改AJAX头文件

Javascript 强制更改AJAX头文件,javascript,android,jquery,ajax,cordova,Javascript,Android,Jquery,Ajax,Cordova,因此,我正在为Android开发一个Apache Cordova应用程序,我希望能够为我发送的AJAX请求设置头,包括主机、源和引用字段。因为这些都是在一个单独的网络视图中执行的,所以我不能访问用户的原始cookie或会话(我保证我不是恶意的)。但每当我试图发送该信息时,就会出现“拒绝设置不安全的头主机”错误。在Apache Cordova中是否有任何方法可以覆盖此选项?如果您使用的是jQuery,则可以在设置调用时尝试使用headers选项。如果需要对头进行更细粒度的控制,还可以使用befor

因此,我正在为Android开发一个Apache Cordova应用程序,我希望能够为我发送的AJAX请求设置头,包括主机、源和引用字段。因为这些都是在一个单独的网络视图中执行的,所以我不能访问用户的原始cookie或会话(我保证我不是恶意的)。但每当我试图发送该信息时,就会出现“拒绝设置不安全的头主机”错误。在Apache Cordova中是否有任何方法可以覆盖此选项?

如果您使用的是jQuery,则可以在设置调用时尝试使用
headers
选项。如果需要对头进行更细粒度的控制,还可以使用
beforeSend
选项

//set specific accept headers (should work cross browser)
$.ajax({
headers: {
    Accept : "text/plain; charset=utf-8",
    "Content-Type": "text/plain; charset=utf-8"
}
});

//an alternative to the above
$.ajax({
    beforeSend: function(xhrObj)
    {
        xhrObj.setRequestHeader("Content-Type","application/json");
        xhrObj.setRequestHeader("Accept","application/json");
    }
    });

您必须使用从本机端发出请求的插件。这种方法将允许您绕过web视图对在源站之外发出请求的限制


你可以开始使用这个插件:。

这是我正在做的,问题是浏览器本身拒绝设置这些标题。在ApacheCordova中有没有一种方法可以覆盖这一点?我知道Chrome不允许您设置内容长度。这是为了你。此外,您可能遇到跨域请求的问题。如果是这种情况,您可能希望尝试使用
xhrObj.setRequestHeader(“Origin”、“*”)Apache Cordova阻止了这一点。它说拒绝设置不安全的标题来源。另一种可能是使用了一种没有严格执行控制的内容类型。这样看来,通过将内容类型设置为plain/text,应该可以顺利完成。这与避免“预飞行”请求有关,从而允许您设置这些头。请确保在服务器端正确管理这些请求。很遗憾,我无法控制我请求的服务器。谢谢您的回复。在我的特殊情况下,我必须发送cookie,因此插件并不理想,但我可以通过一些小的修改使其工作。主机、来源、引用-这些标题通常由浏览器代表您设置,如您所见,任何设置这些标题的尝试都不会触发调用。