オプション要求は何ですか?オプションが要求なぜ?

もう少し理解し、要求のオプションについて

最も最近の改装プロジェクト、少し治療を行うために、すべてのAJAXリクエストを統一し、正常ではない、突然、非常に深刻なAJAXリクエストを発見したために、より多くのそれぞれのAjaxリクエストのオプションの対応方法以前よりあります。〜小さな学習合計それであるためには、約この再集合を見つけるためにどのように決してこの方法を持っているために、AJAX要求の前に知られていないが、が、

オプション要求は何ですか?オプションが要求なぜ?

何より、公式または正式な定義の比較を見てみましょう。

リソースの通信オプションを取得するために、HTTP OPTIONSメソッドがサポートされています。(URLは、「*」に設定されていることによって)クライアントが特定のURLのためのOPTIONSメソッドを使用することができ、ステーションは、プロセス全体のために使用することができます。--MDN WEB DOCS

一方、要求のオプションには、次の特性があります。

オプション 許可するかどうか リマーク
要求は、ボディを持っています 番号 いいえリクエストボディません
正常な応答はボディを持っています 番号 正常な応答応答体
安全 はい セキュリティ
冪等 はい 閉じる同値、不変性は、何度でも同じインタフェースを要求します
キャッシュ可能 番号 キャッシュすることはできません
HTMLフォームで可 番号 形態で使用することはできません。

要するに、オプション要求は、サーバーがクエリのみのために、リクエストメソッド、サポートケースのヘッドを含むいくつかのインターフェースリソースのケースを、サポートしていることを要求されます。栗に、

->>> curl -X OPTIONS https://xxxx.com/micro/share/getShareRecord -i

HTTP/1.1 200 OK
Server: nginx/1.13.3
Date: Mon, 30 Jul 2018 12:50:08 GMT
Content-Length: 0
Connection: keep-alive
Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH
X-Frame-Options: SAMEORIGIN
Access-Control-Allow-Origin: 0
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: X-Requested-With

応答ヘッダーに、カールしてHTTP要求を送信するためには、このサーバの要求インターフェース方法で見つけることができ、いくつかのヘッダの使用は、上にある場合、可能ケースをサポートするために特定のリソースの取得サーバ・オプションを
これらの、オプションやその他のhttpリクエストに加えて、どのような違い?答えはイエスです

ブラウザレベルの動作

少しErshengを聴くの概念は、ああ、私は自分自身そう言います。私たちは、と呼ばれる行動ブラウザ自己開始することができ、「ブラウザレベルの行動を」オプションが原因で、ブラウザレベルの動作である理由いくつかのケースの要求が成功して戻ったとき、経常GETまたはPOSTリクエストのバックが最初に自動的に、オプションを要求するオプションを開始し、実際のAJAX要求が再び開始されます。

「特定の状況」の下で見てみましょう。これはどのような状況ですか?

図1に示すように、クロスドメイン要求、要求が非クロスドメインリクエストのオプションではありません
2、カスタムリクエストヘッダ
3、ヘッダ要求コンテンツタイプは、アプリケーション/ X-WWW-フォーム- URLエンコード、マルチパート/フォームデータ、テキスト/無地以外のフォーマット

状態12または13は、簡単なAjaxのリクエスト要求のオプションがあります場合は、少し同一生成元ポリシーを感じるためには意味がありません、個人の理解これは、同一生成元ポリシーの実装のために、ブラウザの下部にあります。最初は、オプションの要求にも原因が「プリフライト」の要求にそれを知られている理由である次の操作を継続するために、サーバ側で確認しました。

出現後に対処するには?これに対応するための方法をサーバー?

基本的な考え方は、要求を受信した際に、サーバー側で、次の裁判官に行くと200に戻り、それのような成功を次の、何の問題の原因を特定、オプションを要求されていません。しかし、彼らは、特定のデモなどをしなかったので、これは手の込んだません。

 

 

 

コンテンツタイプが表示されますのAXIOSリクエストヘッダフィールドを解決する方法

学習に取りつかれ注意0コメントは2346人が読んで2018年8月8日午後9時59分50秒を

問題の説明:

安らかヘッドヘッダ転送インタフェースのための2つのフィールドが必要です。

コンテンツタイプ:アプリケーション/ JSON
アクセストークン:84c6635800b14e0eba4f7ece65e095a1

しかし、内部の構成をvue.js:

透過表示されますを実行する場合:

事前のリクエストが渡されていない場合には、もはや正式な要求を発行しないことを意味

繰り返しテストの後、我々は、見つかったカスタムフィールドを含むヘッダーは、ブラウザが最初の要求のオプションを送信します、リクエストが承認された場合、それがポストに正式な要求を送信し続けていますが、合格しない場合は、上記のエラーが返されます

これは、サーバー構成オプションは、コードを返すことだけを要求することができ、次のとおりです。

 

  // TODO支持跨域访问
        response.setHeader( "アクセス制御-許可-起源"、 "*"); 
        response.setHeader( "とAccess-Control-Allow-Credentials"、 "真")。
        response.setHeader(「アクセス制御-許可-メソッド」、「*」); 
        response.setHeader(「アクセス制御-許可-ヘッダ」、「コンテンツタイプ、アクセス・トークン」); 
        response.setHeader(「アクセス・コントロール・公開・ヘッダ」、「*」); (request.getMethod()に等しい( "OPTIONS")){もし
            HttpUtil.setResponse(応答、HttpStatus.OK.value()、NULL); リターン; 
        }

 

上記のコード、コンテンツ・タイプおよびアクセス・トークンの頭をできるように追加する必要があり、そしてこの方法は、正式なPOSTリクエストを受信し続けるためには、クライアントにOK(200)返されたときに要求されたオプションかどうかを決定します。

成功した後、ポストの変更要求を行いました。

发布了293 篇原创文章 · 获赞 27 · 访问量 12万+

おすすめ

転載: blog.csdn.net/gwdgwd123/article/details/100554117