ajax自定义标头提交两次 - php

我正在对我构建的自定义api进行api调用。通过curl进行呼叫时效果很好。但这与Ajax有关。我了解cors,并且我相信这可能是与cors相关的问题。

基本上,我有一个简单的ajax调用,该调用调用了脚本并必须发送一个自定义标头。当我发送自定义标头时,它将发送两次请求。至少它在存储api请求的服务器端显示了它。每当我在下面称呼此ajax时,就表明我提出了两个请求。我不明白为什么要这么做。

但是,当我删除自定义标头时,它只会发送一次。

$( document ).ready(function() {
$.ajax({
                 url: 'https://www.website.com/test.php',
                type: 'GET',   
                beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("access_token", '1111'); },
                datatype: 'application/json',

                success: function(data, textStatus, jqXHR) {
                    alert('yes');

                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert('no');
                        console.log( errorThrown );
                }


            }); 
}); 

在PHP方面,我指定了常见的东西。

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: access_token");
header("Cache-Control: no-cache, must-revalidate"); 

任何人有任何想法吗?

更新:
我在下面附加了两个序列化的数组,它们都在同一时间根据相同的请求发布到了数据库中。一种不带自定义标头,另一种不带自定义标头。我不知道这是怎么发生的,预检不应将任何内容发布到数据库。我对这个API的近副本进行了类似的调用,它没有发布两个请求。

没有标题的呼叫
a:11:{s:4:“主机”; s:14:“ www.websitehere.com”; s:10:“连接”; s:10:“保持活动”; s:13:“缓存- Control“; s:9:”最大年龄= 0“; s:29:”访问控制请求方法“; s:3:” GET“; s:6:”来源“; s:20:” http://websitehere.com”; s:10:“用户代理”; s:104:“ Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 41.0.2272.76 Safari / 537.36”; s: 30:“访问控制请求报头”; s:20:“接受,access_token”; s:6:“接受”; s:3:“ /”; s:7:“ Referer”; s:34: “ http://websitehere.com/test_ajax.php”; s:15:“接受编码”; s:19:“ gzip,deflate,sdch”; s:15:“接受语言”; s:14:“ en-US,en; q = 0.8“;}

用自定义标题调用
a:9:{s:4:“主机”; s:14:“ www.websitehere.com”; s:10:“连接”; s:10:“保持活动”; s:6:“接受” ; s:3:“ /”; s:6:“来源”; s:20:“ http://websitehere.com”; s:12:“ access_token”; s:64:“ qUTWcy3qO0Cxc4ffkuU27mmvqyDpLNz4ecB0KTu5PLUllKFb1VhaCbgarfqlDAag” -Users代理”; s:104:“ Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 41.0.2272.76 Safari / 537.36”; s:7:“ Referer”; s:34:“ “; s:15:”接受编码“; s:19:” gzip,deflate,sdch“; s:15:”接受语言“; s:14:” zh-CN,en; q = 0.8 “;}

我确实改变了一些价值观。

参考方案

我不确定为什么我最终坐下来测试了jsfiddle中两者之间的区别。自定义标头添加确实会添加到OPTIONS预检中。我不知道为什么还要打电话两次。唯一可能的其他结果是,调用了缓存版本,然后在刷新材料之后,如果您在Web服务器上配置的Memcache版本或某些其他缓存插件配置不当,则可能会发生这种情况。

标头问题示例

没有标题的问题示例

从开发人员工具中可以看到,添加了标头后,它会执行预检选项请求,如果没有它,它只会收到404。

jQuery Ajax和php类 - php

我正在尝试学习如何在php中使用oop。我对jQuery也很陌生。是否可以向php类方法发出Ajax请求?我只将Ajax请求发送到专门用于此目的的文件,并且返回我需要的数据。 参考方案 简短答案:不可以。长答案:Ajax只是一个使用JavaScript从浏览器发出HTTP请求而无需离开页面的术语。您唯一可以“呼叫”的是URL。您可以编写PHP以根据URL来执…

jQuery Ajax加载仅适用于单个单词变量 - php

在我的PHP文件中,我将一些变量从输入框传递到链接中,该链接通过jQuery的ajax load函数在其URL中使用该变量加载页面。整个系统运行良好,但仅适用于单字变量。每当涉及到空格时,我的Ajax通话都会中断。我假设这是一个编码问题,但是我也有一些疑问。基本上,它归结为我的PHP文件中的这一行代码,这导致了混乱。是否有可能找出格式是否正确,或者为什么在多…

jQuery Ajax响应在Firefox上不起作用 - php

这是php中的响应。我可以确认数据还可以。 $ajax_response = array( 'product_code' => $ajax_products, 'filter' => $ajax_filter ); echo json_encode($ajax_response); exit(); 这是ja…

AJAX实时电子邮件验证(PHP) - php

当用户在我的网站上创建帐户时,我希望对照我的数据库(MySQL)中的所有当前用户名检查输入的用户名,并确认是否可用。有谁知道我可以使用的任何好的库,或者是jQuery的插件? 参考方案 所需的确切信息以示例形式here给出。它使用jQuery作为JavaScript库

jQuery-找不到Ajax网址 - php

好的,我敢肯定这确实很容易,而且我很愚蠢,但是似乎并不能深入了解它。我试图从我的js文件“ custom.js”中对“ helpers.php”中的某些代码进行简单的AJAX调用。但是,我仍然收到404错误,因为我似乎并没有正确遍历文件夹,尽管我确信我正在...我的文件夹结构如下:html index.php js/ custom.js includes h…