7

Mozilla自身の仕様では、単純であるGETか、POSTプリフライトなしでネイティブにCORSである必要がありますが、これまでのところ、POST私が行ったすべての試みの結果、OPTIONSヘッダーが消えてしまいました。コードを取得するために変更するとPOST、すぐに適切なGETリクエストが送信されるため、クロスサイト部分は正常に機能します。

これが私がFirefoxでやっていることのスリム化されたサンプルです:

 var destinationUrl = 'http://imaginarydevelopment.com/postURL';
 var invocation = new XMLHttpRequest();
            if (invocation) {
                invocation.open('POST', destinationUrl, true);
                //tried with and without this line
                //invocation.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

                invocation.onreadystatechange = (function Handler() {
                if (invocation.readyState == 4)
                        alert('Request made');
                });
                invocation.send(/* tried with and without data*/);
            }

これが私がすでにchromeとIEで働いていたものです:

var destinationUrl = 'http://imaginarydevelopment.com/postURL';
var destination = { url: destinationUrl, type: 'POST', success: AjaxSuccess, error: AjaxError,
            dataType: 'text', contentType: 'application/x-www-form-urlencoded'
        };
  destination.data = { 'rows': rowList, 'token': token };
            $jq.ajax(destination);
4

2 に答える 2

3

私も同じ問題を抱えてる

https://developer.mozilla.org/En/HTTP_Access_Control

enctype は text/plain である必要があるか、Fx4+ を使用する必要があると言われています すべてのアクセス ヘッダーを正しく設定する必要があります

于 2010-10-27T16:14:02.903 に答える
1

さて、すべての contentTypes が実際にどのように機能するかはわかりませんが、text/plain3 つのブラウザーすべてで機能します。

var destination = { url: destinationUrl, type: 'POST', success: AjaxSuccess, error: AjaxError,
             contentType: 'text/plain'
        };
var postData={ 'anArray': theArray, 'token': token };
            destination.data=JSON.stringify(postData);

$jq.ajax(destination);

ただし、これまでのところ、505 コードが返された場合でも、成功メソッドを実行する以外に、リクエストが何かを実行するのを妨げているものはわかりませんでした。応答ヘッダーを追加することでAccess-Control-Allow-Origin: *、ブラウザーが戻りデータを読みたくないという問題を解決しました。

于 2010-04-07T13:26:48.850 に答える