web-dev-qa-db-ja.com

Postmanがリクエストを送信する方法ajax、同じOriginポリシー

この非常に便利な拡張機能は、chrome postmanと呼ばれます。これは、特にRESTfulアプリケーションのプログラミングを行う場合に非常に便利な拡張機能です。

私が混乱していることの1つは、このプラグイン/拡張機能が異なるドメインでPOSTリクエストを正常に送信できる方法ですか?

このようにPostmanを使用して投票で投票してみました。 Voting using 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' );
        }
    }
    });
},
44
Joey Hipolito

Chromeパッケージアプリは、クロスドメインのアクセス許可を持つことができます。 Postmanをインストールすると、このアプリが任意のドメインにアクセスすることを通知します。

配置することにより */*は、マニフェストファイルのpermissionsセクションにあります。これを行うことができます。

詳細はこちら: https://developer.chrome.com/extensions/xhr.html

33
Mohsen

Postmanで送信されたAjaxリクエストに次のヘッダーを追加できます。

Content-Type      application/json

X-Requested-With  XMLHttpRequest

スクリーンショット

enter image description here

クレジットtoOrion

9
chebaby

投票をホストするサイト( "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など)を提供する他のライブラリでは、デフォルトでサーバーに他のヘッダーを設定する必要があります。通常、ブラウザのデバッグコンソールで失敗の理由を確認できます。

3
Iain Collins