0

JSON を使用して API への PUT 呼び出しを使用しようとしています。私はjQueryを使用しており、コードが正しく見えることがわかります:

<script type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            url: 'https://app.clickdimensions.com/Service.svc/v1/account/accountIdHere/capture',
            type: 'PUT',
            data: { 'reg_FirstName': 'First',
                    'reg_LastName': 'Last',
                    'reg_Phone': '123-342-1211',
                    'reg_Email': 'email@email.com',
                    'reg_Company': 'My Company',
                    'reg_Address1': '123 Traffic Lane',
                    'reg_Address2': '',
                    'reg_City': 'Atlanta',
                    'reg_State': 'GA',
                    'reg_Zip': '12232',
                    'reg_Country': 'United States'  
            },
            success: function() { alert('PUT completed'); }
        });
    });
</script>

しかし、実行すると次のエラーが発生します。

XMLHttpRequest cannot load https://app.clickdimensions.com/Service.svc/v1/account/accountIdHere/capture. Origin http://localhost:65116 is not allowed by Access-Control-Allow-Origin.

私はいたるところを見て、見つけることができるすべてのものを試しましたが、役に立ちませんでした。したがって、JSON PUT 呼び出しを行うには私のコードが間違っている可能性があると考えています。私のコードは間違っているように見えますか? もしそうなら、どうすれば修正できますか。そうでない場合、そのエラーに関するアイデアはありますか?

ありがとう!

4

2 に答える 2

1

あなたのコードは正しいですが、データをリクエストしているドメインが適切なCORSヘッダーを返さない限り、クロスドメインで PUT リクエストを実行することはできません。

于 2012-06-20T14:55:49.007 に答える
0

あなたのjQueryは良さそうです。問題はOrigin http://localhost:65116 is not allowed by Access-Control-Allow-Origin.

これは、ほとんどの状況で禁止されているクロスドメインリソースの読み込みを示唆しています。制御https://app.clickdimensions.com/Service.svc/v1/account/accountIdHere/captureできる場合は、特定のドメインからのそのようなリクエストを許可するように変更するか、JSON の代わりにJSONPを使用してクロスドメイン リクエストを行うことができますが、そのようなインスタンスで HTTP PUT が成功するかどうかはわかりません. 私の知る限り、JSONP は HTTP GET である必要があります。

于 2012-06-20T15:03:17.080 に答える