1

Codeigniter-php コードを使用してサーバーに Ajax リクエストを送信する Web アプリケーションがあります。Ajax リクエストはローカル サーバーでは正しく機能しますが、アプリケーションがリモート サーバーでホストされている場合は機能しません。コンソール エラーは次のとおりです。

XMLHttpRequest cannot load http://localhost/CI-example/index.php/control/controlHome. Origin http://www.page.com is not allowed by Access-Control-Allow-Origin.

驚くべきことに、要求はサーバーで行われますが、応答は行われません。

私が Ajax リクエストに使用する URL は次のとおりです。

AJAX_URL = "http://localhost/CI-example/site/index.php/control/controlHome"; 

しかし、私も試しました:

AJAX_URL = "http://www.page.com/CI-example/site/index.php/control/controlHome";

そして、次のエラーがキャプチャされます。

POST http://www.page.com/webdom/site/index.php/control/controlHome 500 (Internal Server Error) 

どのようにできるのか?

編集: www.page.com はサブドメインです。サブドメインが Ajax リクエストに使用されている場合、何らかの構成を行う必要がありますか?

フォルダ構成は次のとおりです。

/CI-example
---/application/controllers/control.php
---/system
---/site/js/ajaxRequest.js
4

5 に答える 5

1

私がここに来ているように、あなたが ajax リクエストをサーバーに送信している間、500 (Internal Server Error). エラーはサーバー側からのものであると確信しており、次の理由がある可能性があります-

  1. コードに問題がないbase_url場合は、要求しているものとは異なる可能性があります。base_urlはい、これは問題を引き起こす可能性があります。たとえば、Web アプリケーションをホストしていてwww.mysite.com、それを要求している場合ですmysite.com
  2. 次の理由は、Windows または大文字と小文字を区別するシステムでプロジェクトを開発したが、Linux のようなサーバーにアップロードすると、すべてのファイル名で大文字と小文字が区別されることです。たとえば、指定したモデル ファイル名が であるとMyModel.phpしますが、モデルをロードすると、特定のクラスが見つからないなどのエラーが生成されます。
于 2014-02-06T19:28:33.443 に答える
0

2 番目のエラーは次のとおりです。500 (Internal Server Error)

これは、クロスオリジン ポリシーの問題ではなく、サーバー側でエラーが発生したことを意味します。
これはおそらく、PHP スクリプトの実行エラーです。

エラー ログを確認します (例: 標準の LAMP スタックを使用している場合、エラー ログは のどこかにあるはずです/var/log/apache2/) 。

于 2014-02-05T09:33:50.077 に答える
0

これを試して、

http://localhost/CI-example/index.php/control/controlHome

それ以外の

http://localhost/CI-example/site/index.php/control/controlHome

あなたのajax URLで。フォルダ構造から、URL に「サイト」を含める必要はありません。

于 2014-02-06T03:17:30.180 に答える
0

そのページで「Access-Control-Allow-Origin」と呼ばれる特別なヘッダーを使用して許可されていない限り、AJAX を使用して別のドメインに HTTP POST 要求を行うことはできません。

localhost は page.com とは異なるため、これは機能しません。

于 2013-01-23T13:14:32.483 に答える
0

http://www.page.comの URLに対する応答は、ページの実行中に問題が発生したことを示しています。PHP エラー ログは、何を見つけるのに役立つはずです。

行を追加するini_set('display_errors', 1)と、エラー ハンドラで ajax リクエストにエラーが返される場合があります。使用後に行を削除することを忘れないでください。これを製品コードに残したくありません。

于 2014-02-04T07:01:47.077 に答える