[ScriptService] 属性を使用して、ASP.NET Web サービスを実行しています。この記事から読んだことから:
デフォルトでは、ASP.NET は JSONP リクエストを許可しません (クロスドメイン リクエストを拒否するために DOM に挿入されます)。これは、次の 2 つの方法で行います。
1) POST リクエストのみを受け入れる (常に GET を介したスクリプト インジェクション) 2) "Content-type: application/json" 以外の HTTP ヘッダー Content-type を送信する接続を拒否する (ブラウザは送信しません)。
私はクロスドメインの問題に精通しており、JSONP が何であるかを知っており、ASP.NET がデフォルトでそのように制限されている理由を完全に理解しています。
しかし今、私は自分の Web サービスを公開しており、誰にでも公開する必要があります。そのため、Javascript を介して Web サービスへのクロスドメイン要求を明示的に有効にする必要があります。これにより、外部 Web サイトが jquery などから Web サービスを介してデータを取得できるようになります。
[ScriptMethod(UseHttpGet=true)] のように ScriptMethod 属性を変更して、GET 経由のリクエストを許可する手順 (1) については既に説明しました。jQuery で確認したところ、GET リクエストが機能するようになりました (同じドメインで)。しかし、修正点 (2) にたどり着くにはどうすればよいでしょうか。
一部のブラウザーがサポートする Allow-Origin-* ヘッダーについては知っていますが、まだ標準ではありません。ユーザーや顧客に、Web サービスを使用するために HTTP ヘッダーを変更するよう強制したくありません。
要約すると、JSON を介してパブリック Web サービスの ScriptingService のクロスドメイン リクエストを有効にするための適切な方法が必要です。つまり、Web サービスを公開する方法がなければならないということです。それが、ほとんどの Web サービスの目的です。