[解決済み] OPTIONSプリフライトのリクエストをスキップするには?
質問
私は PhoneGap アプリを開発し、現在モバイル ウェブサイトに変換しています。1 つの小さな不具合を除いて、すべてが順調に動作しています。POST リクエストを介して特定のサード パーティ API を使用していますが、アプリでは正常に機能するのに、モバイル ウェブサイトのバージョンでは失敗します。
よく見てみると、AngularJS (実際にはブラウザ) が最初に OPTIONS リクエストを送信しているようです。今日、CORS について多くを学びましたが、CORS を完全に無効にする方法を見つけ出すことができないようです。私はそのAPIにアクセスできませんが(したがって、その側での変更は不可能です)、彼らは私が作業しているドメインをAccess-Control-Allow-Originヘッダーに追加しています。
これが私が話しているコードです。
var request = {
language: 'fr',
barcodes: [
{
barcode: 'somebarcode',
description: 'Description goes here'
}
]
};
}
var config = {
headers: {
'Cache-Control': 'no-cache',
'Content-Type': 'application/json'
}
};
$http.post('http://somedomain.be/trackinginfo', request, config).success(function(data, status) {
callback(undefined, data);
}).error(function(data, status) {
var err = new Error('Error message');
err.status = status;
callback(err);
});
ブラウザ(またはAngularJS)がOPTIONSリクエストを送信するのを防ぎ、実際のPOSTリクエストにスキップするにはどうしたらよいでしょうか?私はAngularJS 1.2.0を使用しています。
事前にありがとうございます。
どのように解決するのですか?
プリフライトは、Content-Type が
application/json
. これを防ぐ最も簡単な方法は、Content-Type を
text/plain
を指定することです。あなたの場合は
application/x-www-form-urlencoded
&
multipart/form-data
Content-Types も使用できますが、もちろんリクエストのペイロードを適切にフォーマットする必要があります。
この変更を行った後もプリフライトが表示される場合、AngularはリクエストにXヘッダを追加している可能性があります。
または、それをトリガーするヘッダー(Authorization、Cache-Control...)があるかもしれませんので、参照してください。
関連
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] フォーム送信のようなJavaScriptのポストリクエスト
-
[解決済み] HTTP POSTリクエストでは、どのようにパラメータが送信されるのですか?
-
[解決済み] HTTP POST Web リクエストの作成方法
-
[解決済み] POSTとPUT HTTP REQUESTの違いは何ですか?
-
[解決済み] REST APIからデータを取得しようとしたときに、要求されたリソースに'Access-Control-Allow-Origin'ヘッダーが存在しない。
-
[解決済み] OPTIONSリクエストを送信する理由と、それを無効にする方法を教えてください。
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み】プリフライトCORSリクエストの導入の動機は何ですか?
-
[解決済み】CORS(cross-origin resource sharing)投稿リクエストを動作させる方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: window.initMap is not a function
-
[解決済み] AngularJs ReferenceError: $http is not defined
-
[解決済み] AngularJSの.$uibModalとは何ですか?
-
[解決済み] シンプルなangularjsの日付入力
-
[解決済み] ng-repeat内で$indexを使用して、クラスを有効にしてDIVを表示するにはどうすればよいですか?
-
[解決済み] Apigee API へのリクエストで 401 レスポンスエラーが発生する
-
[解決済み] 新しい/分離されたスコープを求める複数のディレクティブ [ngController, ...] がある。
-
[解決済み] 入力フィールドにフォーカスを当てるには?
-
[解決済み] コントローラでフィルタを使用するには?
-
[解決済み] ng-repeat :単一フィールドによるフィルタリング