0

すべてを Apache htaccess に追加しました。

ヘッダー セット Access-Control-Allow-Headers: X-Requested-With
ヘッダー セット Access-Control-Allow-Methods: OPTIONS
ヘッダーに Access-Control-Allow-Methods を追加: GET
ヘッダーに Access-Control-Allow-Methods を追加: POST
ヘッダーは Access-Control-Allow-Headers を追加します: Content-Type
Header add Access-Control-Allow-Headers: Depth
Header add Access-Control-Allow-Headers: User-Agent
Header add Access-Control-Allow-Headers: X-File-Size
Header add Access-Control-Allow-Headers: X-Requested-With
ヘッダーは Access-Control-Allow-Headers を追加します: If-Modified-Since
Header add Access-Control-Allow-Headers: X-File-Name
ヘッダー追加 Access-Control-Allow-Headers: Cache-Control
ヘッダー セット Access-Control-Allow-Origin: http://mysite.com
ヘッダーは Access-Control-Allow-Origin を追加します: https://mysite.com
ヘッダー セット Access-Control-Allow-Credentials: true

これをjquery $.ajaxに追加しました:

xhrFields: {
    withCredentials: 真
}

絶対に何も機能しません。

私は $.ajax をやっています

タイプ: 'POST',
データ型: 'json'

上記のヘッダーをすべて設定することで、jsonpではなくjsonを実行できると思いました(jsonpを使用しないでください。jsonp以外は使用しないでください。起動に成功しません。please.god.no)

私は限界に来ています。私は良いオレを得ています

XMLHttpRequest はhttps://mysite.com/aDirectory/aSecureFile.phpを読み込めません。Origin http://mysite.comは Access-Control-Allow-Origin で許可されていません。

助けてください。私はここで死にかけています。私はどこでも見たことを約束します、ああ、私はどこでも見ましたか。

よろしくお願いします!

明瞭さ

私のヘッダーはすべて出くわしています。応答ヘッダーでそれらを確認できますが、まだ上記のエラーが発生します。サーバーがブロックされていませんか? ブラウザ?httpsを行うために何か特別なことをしなければなりませんか? CORS を許可するために設定する必要がある Apache の別の設定はありますか? 私のjQuery $.ajaxは正しいですか? データと成功とエラー (および URL は常に https) を除けば、jQuery の $.ajax に対して行っていることはこれだけです。

再度、感謝します!

新着

クロス ドメイン AJAX プリフライトがオリジン チェックに失敗しても役に立ちませんでした (私はそうは思いません)。追加した

ヘッダー セット Access-Control-Allow-Headers: ORIGINS
(セットと追加の調整)。パイプを下るすべての応答ヘッダー。

新しい

これらを追加

Header add Access-Control-Allow-Headers: Origin
Header add Access-Control-Allow-Headers: Accept
まだ何もない

リクエストヘッダー

これらは役に立ちますか?

Accept:application/json, text/javascript, / ; q=0.01
Content-Type:application/x-www-form-urlencoded; 文字セット=UTF-8
Origin: http://mysite.com 
Referer: http://mysite.com/ 
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (Gecko のような KHTML) Chrome/23.0.1271.64 Safari/537.11

PHP

header("Access-Control-Allow-Origin: http://mysite.com");
header("Access-Control-Allow-Origin: https://mysite.com");

応答ヘッダーの明確さ

RESPONSE HEADERS は、クロス ドメインの https ajax ではなく、すべての通常のリクエストで送信されます。

サーバ

CentOS 5.8、Apache 2.2.2、PHP 5.3、cPanel、WHM

PHP が実行されていない場合は問題ありません

というわけで、慌ててslashingweaponのcors.phpをphpタグなしでそのままコピーしてみました。上記の設定を使用して $.ajax でテスト ページを作成しました。

応答ヘッダーで完全に機能しました(ajaxが起動したときにエラーがなかったため)。タグを PHP に追加するとすぐに、エラーが発生しました。PHPが実行されていない限り、それがディレクトリの問題であるかどうかを確認し、ルートとサブディレクトリの両方に配置しました。

これは誰かにとって何か意味がありますか?

反転する必要がある PHP 設定はありますか?

これを私と一緒に磨いてくれてありがとう!

心拍があります

htacess の複数の引数がサーバーを台無しにしているようです。上記のすべてのオプションをこれに減らしました(これは私にとっては問題ありませんが、もっと必要とする愚か者には同情します):

<IfModule mod_headers.c> <FilesMatch "\.(php)$"> Header set Access-Control-Allow-Origin: http://mysite.com Header add Access-Control-Allow-Methods: POST </FilesMatch> </IfModule>

私がPHPに入れたのは

echo "これは少なくとも動作します":

そして、それは応答で来ました。PHP が失敗する原因を突き止めたら、投稿します。

もう一度、ありがとう!

Zend Guardが問題ですか?

Sooooooooo、ごめんなさいみんな。私のサイトで Zend Guard が実行されていることを追加するのを忘れていました。それが原因だと感じてください。

4

2 に答える 2

1

まず、mod_headersが有効になっていることを確認する必要があります

a2enmod headers

次に、テストとして、.htaccessファイルでオリジンをワイルドカードとして設定できます

Header set Access-Control-Allow-Origin *

コロン(:)がある場合とない場合のドキュメントが表示されていますが、現在テストするシステムがないため、それでも試してみることができます。

もちろん、ヘッダーを有効にした後、apacheをバウンスする必要があります。

于 2012-11-10T04:33:17.583 に答える
1

クライアントが CORS リクエストを実行しようとすると、最初に「プリフライト」リクエストを送信して、サーバーが CORS をサポートしていることを確認します。プリフライト リクエストが成功すると、実際のリクエストが送信されます。

サーバーは、CORS 要求に対して正しい応答を送信する必要があります。これを行う方法を示すCORS PHP gist があります。

于 2012-11-10T17:30:36.620 に答える