跨域AJAX请求失败

时间:2017-09-22 15:52:13

标签: php ajax cors

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

我已经按照How do I send a cross-domain POST request via JavaScript?

的说明进行了操作

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);
    }
});




浏览器响应 enter image description here

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

如果请求的域中包含mydomain,那么它将成为IF条件,然后它将允许您访问。

答案 2 :(得分:0)

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

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

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