2017-09-22 30 views
1

クロスドメインのajaxリクエストを作成しようとしています。受信側でPHPヘッダーを設定してjQuery AJAXリクエストを設定しましたが、何らかの理由でページをリフレッシュし、私の研究からCORSによって引き起こされた503の応答コードで起点エラーが発生しました。クロスドメインAJAXリクエストが失敗しました

私は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); 
 
    } 
 
});
ため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のためにここにHow do I send a cross-domain POST request via JavaScript?

ヘッダからいくつかの手順に従っています

ブラウザの応答 enter image description here

+0

あなたは503の応答をもたらすリクエストのキャプチャを投稿できますか? – Halcyon

+0

こんにちは私はこの最初のタイマーのビット、私は使用しているPHP関数やヘッダーの応答になるだろうか? – James

+0

'crossDomain:true'はあなたが思っていることをしません。クロスドメインリクエストが存在しない場合は、クロスドメインリクエストを偽装します。あなたのリクエストが既に_実際にcrossdomainである場合は、それを使用しないでください。 jquery ajaxドキュメントを読んでください。 – ADyson

答えて

0

私は一度、この問題を持っていたし、私はこれによって解決は、私がアクセスしようとしたターゲットウェブサイトで.htaccessファイルを作成しました。

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

そのAN IF条件要求しているドメインはそれでmydomainを持っている場合、それはあなたがアクセスできるようになります。

+0

これはPHPコードが何をすべきかを示しています。私はそれが503を修正するのか疑問だ。 – Halcyon

0

CORSポリシーでは、送信できるヘッダーも指定する必要があります。

503は少し奇妙です。あなたは許可されたヘッダのリストにContent-Typeを設定する必要があると思います。 MDNによると、これら:https://developer.mozilla.org/en-US/docs/Glossary/simple_headerは、明示的に

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

それはいくつかのPleskのインストールはビットバギーあることが判明し、503エラーがproxy_fcgiのApacheプロセスから来て送信する必要はありません。ヘッダがあります。

このエラーを一時的に修正するには、Apache/Nginxが提供するFPMの代わりにFastCGIを使用するようにpleskでアプリケーションを設定する必要があります。

関連する問題