0

ajaxリクエストを送信すると、このエラーが発生することがあります

XMLHttpRequest cannot load http://www.mysite.com/go/submit. Origin http://mysite.com is not allowed by Access-Control-Allow-Origin.

これが私が考えた解決策です:

* Add the allow origin rule everywhere?
* Write .htaccess to always redirect to full url
* Use this method http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/

この問題をどのように修正すればよいですか?

4

1 に答える 1

2

同じオリジン ポリシーとは、自分のものとは別の「オリジン」(ドメイン、ポート) からのデータ (json、html、画像など) を分析できないことを意味します。

ご了承ください

「オリジン」という用語は、スクリプトを実行する HTML ドキュメントのドメイン名、アプリケーション層プロトコル、および (ほとんどのブラウザーで) ポート番号を使用して定義されます。

解決策は、他のデータを提供するサーバーで、アクセスを明示的に許可するCORS ヘッダーを設定することです。

Access-Control-Allow-Origin: *

したがって、表示するだけでなく、埋め込んだデータを提供するサーバーを制御する必要があります。

やや間接的な解決策は、サーバーにプロキシを配置することにより、ブラウザに発信元が 1 つだけであると認識させることです。Apache では .htaccess は必要ありませんが、.htaccess は必要ありませんmod_proxy。そのようなプロキシをインストールしたい場合は、この SO の質問に興味があるかもしれません(実際、サーバーの 1 つにそのようなプロキシを設定するのに役立つ回答にもっと興味があるでしょう)。

www.mysite.com ではなく mysite.com と入力するだけの問題があり、サーバーが 1 つしかない場合は、単に .htaccess を使用して URL を書き換えることができます。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301]
于 2012-10-15T18:34:29.473 に答える