Sco*_*ton 5 javascript ajax http-status-code-403
执行对API的AJAX调用时,我不断收到上述403错误。
该错误发生在Microsoft Edge中,但不会发生在IE,Chrome,Firefox或Safari中。
该页面未使用引导程序,因为我已阅读到它可能是由于该页面无法找到所需的.LESS文件所致。我什至尝试包括引导程序,以查看是否可以解决问题-确实没有。
除了上面的一些Twitter Oauth内容和引导程序答案外,我似乎无法通过谷歌搜索找到任何内容-两者均与我的应用程序无关。
如前所述,AJAX调用在任何浏览器(EXCEPT Edge)中都可以正常工作。各种浏览器中的代码完全相同,并且响应/请求标头彼此匹配-因此,POST请求发送的数据不正确的情况(在不同的浏览器默认设置或其他情况下)不存在。
这就是我想要实现的目标:
index.html包含4个包含广告的iFrame。然后,我的Javascript代码获取了iFrame标签,并覆盖了一个大拇指向上/向下图标,用户可以在其中为上述广告提供反馈。AJAX调用将传递广告网址(iFrame src)和用户ID(consumer_id)。然后,在将其写入数据库以记录大拇指向上/向下动作后,它返回一个印象ID。
示例代码:
index.html:
<body>
<iframe src="https://ad.doubleclick.net/ddm/adi/N4406.154378.CRITEO/B9862737.133255611;sz=728x90;click=http://cat.fr.eu.criteo.com/delivery/ck.php?cppv=1&cpp=ZNbxVXxoRmlURGJwS3JrRUZxTXVnNG83QmlTRUhSNDgzZEFXeEt6Q2VkcXpuTlFXTzBPUytNL0t3QW1NR2hiWXMyU1Jjb0NsTDZZQk8ybzRnajZnZlNodTJKNjhiSW8yaFlPTVBDRUlZQjJ5QVNUQjQrNHd5UEJicEI5OS95NUUxMWVDbGRZamZ4RjZYS1FHam5LQ1dpcENzanhtcEhlckpmOEVuSUhRTllIQnBPazlnMnQ3eWVJcjhOSzRYOXYwOXlqYVFrTnI0eDZJSTBjR1lGM2VUVVloQjd3RlJUcndIQUl3NUpRalY0YXV3Q29SRktKSkFJSktueU0vMVdydko4UzZGSldkbUR1RUR4MTU2a0loamFYZlpiZz09fA%3D%3D&maxdest=;dcopt=anid;ord=f4840e2d31;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=?" width="728" height="90" marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="no" bordercolor="#000000"></iframe>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script type="text/javascript" src="client.js"></script>
</body>
Run Code Online (Sandbox Code Playgroud)
AJAX电话:
// This isn't usually a var, but added for clarity. Usually uses a selector
// to grab the entire iframe DOM element, and then store in array.
var iframe = "http://ad.doubleclick.net/ddm/adi/N4406.154378.CRITEO/B9862737.133255611;sz=728x90;click=http://cat.fr.eu.criteo.com/delivery/ck.php?cppv=1&cpp=ZNbxVXxoRmlURGJwS3JrRUZxTXVnNG83QmlTRUhSNDgzZEFXeEt6Q2VkcXpuTlFXTzBPUytNL0t3QW1NR2hiWXMyU1Jjb0NsTDZZQk8ybzRnajZnZlNodTJKNjhiSW8yaFlPTVBDRUlZQjJ5QVNUQjQrNHd5UEJicEI5OS95NUUxMWVDbGRZamZ4RjZYS1FHam5LQ1dpcENzanhtcEhlckpmOEVuSUhRTllIQnBPazlnMnQ3eWVJcjhOSzRYOXYwOXlqYVFrTnI0eDZJSTBjR1lGM2VUVVloQjd3RlJUcndIQUl3NUpRalY0YXV3Q29SRktKSkFJSktueU0vMVdydko4UzZGSldkbUR1RUR4MTU2a0loamFYZlpiZz09fA%3D%3D&maxdest=;dcopt=anid;ord=f4840e2d31;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=?";
$.ajax({
method: 'POST',
url: 'http://my.api/url/',
async: false,
datatype: 'json',
data: {
ad_url: iframe, // fetch ad_url from iframe src
wittel_consumer: "57fcea30f910092a06806344"
},
success: function(data, respText, xhr) {
console.log('Data',data);
console.log('XHR',xhr);
},
error: function(error) {
console.log('URL',this.url);
console.log('Error',error);
}
});
Run Code Online (Sandbox Code Playgroud)
在此代码中,AJAX被操作,但是在“错误”方法下返回。我可以看到URL是正确的,并且在error回调中,我只是得到一个包含的喜欢的对象readyState: 4, status: 403, statusText: "Forbidden"。如前所述,该API可以正常运行,因为它已在任何其他浏览器中成功完成,因此必须与Edge处理请求的方式有关。还是服务器配置的东西?老实说,我不知道。
完全错误:
HTTP403: FORBIDDEN - The server understood the request, but is refusing to fulfill it.
(XHR)POST - http://my.api/url/
对于其他任何有此问题的人:
我将代码放在服务器上,然后从那里运行以测试它是否是localhost连接。
我正在使用的API必须配置为不允许本地主机连接,这是我以前从未经历过的。
浪费2天并失去理智的好方法!
无论如何,感谢您的上述建议。欣赏它。
| 归档时间: |
|
| 查看次数: |
20339 次 |
| 最近记录: |