問題タブ [http-options-method]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
http - nginx での OPTIONS リクエストの処理
現在 HAProxy をロード バランサーとして使用しており、OPTIONS リクエストを使用してダウンストリーム ボックスに定期的にリクエストを送信し、それらが有効であることを確認します。
オプション /index.html HTTP/1.0
nginx をキャッシング付きのリバース プロキシとして設定する作業を行っています (ncache を使用)。何らかの理由で、OPTIONS リクエストが着信したときに nginx が 405 を返しています。
192.168.1.10 - - [22/Oct/2008:16:36:21 -0700] "オプション /index.html HTTP/1.0" 405 325 "-" "-" 192.168.1.10
ダウンストリーム Web サーバーに直接アクセスすると、適切な 200 応答が返されます。私の質問は、nginx がその応答を HAProxy に渡すようにする方法、または nginx.conf で応答を設定するにはどうすればよいかということです。
jquery - GET リクエストではなく OPTIONS リクエストを受け取るのはなぜですか?
その URL に対して OPTIONS リクエストを実行すると、コールバックが呼び出されることはありません。
クロスドメインでない場合は正常に動作します。
jQuery は<script>
ノードで呼び出しを行い、ロードされたときにコールバックを実行するべきではありませんか? (クロスドメインであるため)結果を取得できないことは理解していますが、それで問題ありません。通話を通過させたいだけです。これはバグですか、それとも何か間違っていますか?
http - Tomcat、HTTP、オプション
注:Tomcatは初めてです...
Tomcat localhost_access_log に次のメッセージが表示されます。
127.0.0.1 - - [09/Oct/2009:09:37:30 -0700] "オプション /stl/foo HTTP/1.1" 200 -
OPTIONSがどこから来たのか誰か説明してもらえますか? 私はサードパーティのライブラリ (DirectJngine) を使用していますが、ソースを熟読すると、これが設定されていることへの参照が表示されません。ドキュメントは、常にGETまたはPOSTを使用することを暗示しています。OPTIONS は Tomcat 内のデフォルトのようなものですか?
ブラウザーから同じことを行った場合、同じログ ファイルは、より正常に見える GET を示しています。
127.0.0.1 - - [09/Oct/2009:09:07:24 -0700] "GET /stl/foo HTTP/1.1" 500 1805
http - access.logapache2のスタンジレコード
今日、apache2Webサーバーのアクセスファイルにスタンジレコードがあることに気付きました
これらの行が何を意味するのか誰かが知っていますか?
wcf - JQueryからWCFRESTメソッドへのJSONデータの送信で問題が発生しました
wCFサービスにあるrestメソッドにjsonデータを投稿するためにjqueryを取得するのに問題があります。
WCF側では、運用契約は次のとおりです。
との両方MyResult
にMyRequest
必要なすべての属性と属性がマークされておりDataContract
、DataMember
サービスはWebHttpエンドポイントを公開しています。
JQuery側では、これが私の関数呼び出しです。
このリクエストは私のメソッドに到達することはなく(毎回405メソッドが許可されていません)、Charlesでリクエストを見ると次のようになります。
これについて奇妙なことがいくつかあります:
- メソッドはPOSTではなくOPTIONSです
text/html; charset=UTF-8
jsonの代わりに(別のタブの)コンテンツタイプが表示されます- JSONデータはどこにも見られません
ただし、Charlesでリクエストを変更して、ヘッダーがここのソリューションと同様になるようにすると、すべてが機能します。
ここでチュートリアルやその他の質問を見ると、他の人がJQueryにこのようなWCF RESTメソッドに投稿させることができましたが、ここで何が間違っているのか途方に暮れています。
ちなみに、これはWCF 4サービスであり、JQuery1.4.4を使用しています。
ありがとう、
アップデート:
もう少し読んだ後、クロスドメイン仕様を教えてくれたDarrelに感謝し、サービスインターフェイスでサービスに小さな変更を加えることで、もう少し先に進むことができました。
実装では、着信要求がOPTIONSに対するものであるかどうかを確認する必要があります。その場合、意図した作業を行うのではなく、いくつかのヘッダーを返します。
次に、メソッドが2回呼び出されます。最初は、サーバーがnullを返しますが、クライアントにいくつかのヘッダーを追加します。その後、実際の要求はPOSTをメソッドとして使用して行われ、サーバーは先に進んで要求を通常どおり処理します。
ajax - ASP.NET MVC で「OPTIONS メソッド」を処理する方法
私の Sencha Touch アプリは私のasp.net-mvc-3POST
WebService にフォームを投稿していますが、それを送信するのではなく、送信していOPTIONS
ます。
ここで同様のスレッドを読んでいますOPTIONS
が、コードでメソッドを処理する方法がわかりません。
アクションに属性を追加しようとし[AllowAjax]
ましたが、MVC3 には存在しないようです。
オプション /GetInTouch/CommunicateCard HTTP/1.1
Host: webservice.example.com
Referer: http://192.168.5.206/ Access-Control-Request-Method: POST
Origin: http://192.168.5.206
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/534.24 (Gecko のような KHTML) Chrome/11.0.696.71 Safari/534.24
Access-Control-Request-Headers: X-Requested-With, Content-Type
Accept: /
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
私の ActionMethod では、次のコードを使用しています。
rest - CORS を使用した安らかなクロスドメインの OPTIONS リクエスト
クライアント側では、json で Ajax.post (jquery 1.5) を使用しています。サーバー側では、resteasy-jaxrs-2.0.1.GA を使用しています。サーバーの応答にいくつかのヘッダーを追加する必要がある場所を見つけたので、次のフィルターを使用しました。
ヘッダーの上のすべての単一の GET 応答が追加されると、正常に機能します。POSTリクエストを使用したいときに問題が発生します。Ajax.postを使用すると、最初にサーバーがOPTIONSリクエストを取得し、次のエラーが発生しました:
Failed executing OPTIONS [REST_PATH]
org.jboss.resteasy.spi.DefaultOptionsMethodException: No resource method found for options, return OK with Allow header
上記のエラーを解決するために、POST ([REST_PATH]) と同じパスで @OPTION アノテーションを使用してメソッド呼び出しを追加しようとしました。その場合、添付された jaxrs ライブラリに OPTION.class があっても、シンボル :class OPTIONS が見つからないことが javac から通知されました。
それを修正するためのアイデアはありますか?手がかりにとても感謝しています。
http - Javascriptリクエストを使用したHttpオプションメソッド
私はbackbone.jsのモデルを使用しています。モデルを保存すると、Firefoxのサーバー側にHTTP OPTIONSメソッドが送信されますが、safariを使用してHTTPPOSTメソッドが送信されます。
それはbackbone.jsの問題ではなく、CORSの問題であることを私は知っています。サーバー側でメソッド、GET、POST、PUT、およびDELETEを確認するだけで、HTTPOPTIONSメソッドではジョブを実行しません。
リクエストされたURLは私のAPIです:api.foo.comとAPIはからリクエストされました:bar.com
では、すべてのブラウザで、OPTIONSではなくHTTP POSTを使用してapi.foo.comをリクエストするにはどうすればよいですか?api.foo.comのコンテンツを他のドメインからのすべてのリクエストと共有するにはどうすればよいですか?
注:応答のヘッダーをサーバー側から次のように変更しました:Access-Control-Allow-Origin:*
asp.net-mvc - System.Web.Mvc.HttpVerbs クラスに TRACE、CONNECT、および OPTIONS がないのはなぜですか?
RFC 2616 HTTP/1.1 定義では、次の一般的な HTTP メソッドが存在すると述べています。
GET、HEAD、POST、PUT、DELETE、TRACE、OPTIONS、CONNECT
しかし、System.Web.Mvc.HttpVerbs列挙型には TRACE、OPTIONS、および CONNECT がありません。
特定の決定を下すためにリクエストから HttpVerb を取得するアクション フィルターがあるので (たとえば、リクエストがベース タイプ A のモデルを PUT している場合、データを設定します)、このユーティリティ コードは次のようになります。最後の 3 つのリクエストに対して ArgumentOutOfRangeException をスローしています (ほとんどが OPTIONS - Google 翻訳から来ているようです):
これを回避する方法がわからない - 何かアイデアはありますか?
私が考えることができる唯一のことは、最初に生のHTTPメソッドをチェックするようにすべての参照コードを変更し、次にTRACE、OPTIONS、またはCONNECTでない場合にのみユーティリティを呼び出すことです。これはちょっとハックです。
enum クラスにないのはなぜですか? それには具体的な理由がありますか?MVC は単にこれらのタイプのリクエストを処理できないのでしょうか?
OPTIONS メソッドの音からすれば、MVC に到達することさえできず、IIS 自体で処理する必要がありますか?