繁体   English   中英

跨域 AJAX 请求失败

[英]Cross domain AJAX request failing

我正在尝试发出跨域 ajax 请求,我已经在接收端设置了 PHP 标头并设置了 jQuery AJAX 请求,但由于某种原因它可以工作,然后您刷新页面并触发 cors 源错误,响应代码为503,根据我的研究,它是由 CORS 引起的。

我遵循了这里的一些说明如何通过 JavaScript 发送跨域 POST 请求?

api.mydomain.co.uk 的标头

header('Access-Control-Allow-Origin: https://mydomain.co.uk');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');

jQuery for mydomin.co.uk

 $.ajax({ type: 'POST', url: "//api.mydomain.co.uk/application/mp/basket", crossDomain: true, xhrFields:{withCredentials: true}, data: {Route: "ItemCount"}, success: function(data) { $('.count').text(data); } });

浏览器响应在此处输入图片说明

事实证明,一些 Plesk 安装有点问题,503 错误来自 proxy_fcgi apache 进程。

要临时修复此错误,您需要在 plesk 中设置您的应用程序以使用 FastCGI 而不是 Apache/Nginx 提供的 FPM。

我曾经遇到过这个问题,我通过这个解决了这个问题,我在我试图访问的目标网站中创建了一个.htaccess文件。

<IfModule mod_headers.c>
    SetEnvIf Origin "http(s)?://(www\.)?(mydomain)$" AccessControlAllowOrigin=$0$1
    Header add Access-Control-Allow-Origin *
</IfModule>

如果请求的域中有mydomain则它是一个 IF 条件,那么它将允许您访问。

CORS 策略还应指定您可以发送哪些标头。

503有点奇怪。 我认为您需要在允许的标题列表中设置Content-Type ,也许还有其他。 根据 MDN 这些:https ://developer.mozilla.org/en-US/docs/Glossary/simple_header是您不需要明确发送的标头

header('Access-Control-Allow-Headers: Content-Type, etc');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM