この非常に便利な拡張機能は、chrome postmanと呼ばれます。これは、特にRESTfulアプリケーションのプログラミングを行う場合に非常に便利な拡張機能です。
私が混乱していることの1つは、このプラグイン/拡張機能が異なるドメインでPOSTリクエストを正常に送信できる方法ですか?
このようにPostmanを使用して投票で投票してみました。
それを提出した後、投票は実際にカウントされましたが、ブラウザの異なるOriginポリシーのために、ajaxとjavascriptを使用してそれをやろうとしたときに失敗しました。
それはどのように可能ですか?
ここにjqueryを使用したコードがあります。私のコンピューターでは、localhostを使用しました。
init: function() {
$.ajax({
url: 'http://domain.com/vote.php',
type:'POST',
dataType: 'html',
data: {
id: '1'
},
success: function(data) {
if ( data == 'voted' ) {
$('.set-result').html( 'you already voted. try again after 24 hours' );
} else {
$('.set-result').html( 'successfully voted' );
}
}
});
},
Chromeパッケージアプリは、クロスドメインのアクセス許可を持つことができます。 Postmanをインストールすると、このアプリが任意のドメインにアクセスすることを通知します。
配置することにより */*
は、マニフェストファイルのpermissions
セクションにあります。これを行うことができます。
Postmanで送信されたAjaxリクエストに次のヘッダーを追加できます。
Content-Type application/json
X-Requested-With XMLHttpRequest
スクリーンショット
クレジットtoOrion
投票をホストするサイト( "vote.php"スクリプト)のように聞こえますが、サイトのリスト(またはすべてのサイト)からの投稿を許可するには、 "Access-Control-Allow-Origin"ヘッダーセットが必要です。
ヘッダーの値を*にすると、すべてのWebサイトからの投稿が許可されます。
Access-Control-Allow-Origin: *
つまり、vote.phpの先頭に次を置くことができます
header('Access-Control-Allow-Origin: *');
Chromeの拡張機能とアプリは、通常のウェブページと同じセキュリティ制限の対象ではありません。
追加のデバッグのヒント:
ブラウザのローカルファイルシステムで開いているWebページからリモートサービスにアクセスしようとしている場合、ブラウザがWebサービスから提供されるファイルとは異なるセキュリティルールを適用することがあります。
例えばブラウザでC:\MyDocuments\weboot\index.htm
(Windows)または\Users\joe\Sites\index.html
(Mac)などの場所からローカルファイルを開くと、ヘッダーが指定されていてもAJAX)リクエストが機能しない場合がありますほとんどのブラウザで。
AppleのSafariは、ローカルで開かれたファイルにクロスドメイン制限をほとんど適用しませんが、Firefoxは、Chromeの途中にあります。Webサーバーをローカルで実行します(http://localhost/
)は、予期しない動作を避けるための良いアイデアです。
さらに、Ajaxリクエストを処理する機能(AngularJSなど)を提供する他のライブラリでは、デフォルトでサーバーに他のヘッダーを設定する必要があります。通常、ブラウザのデバッグコンソールで失敗の理由を確認できます。