2016-12-16 5 views
0

Chrome拡張機能からウェブアプリのAPIバックエンドにアクセスする必要があります。ウェブページ自体から発信されたxhrリクエストは常にプリフライトされます(OPTIONS)。しかし、私は拡張モジュールを起動してプリフライトリクエストを発行することはできず、GETリクエストを起動し、サーバー認証メカニズムはOPTIONSがない状態でコールを拒否します。Chrome拡張機能jquery Ajaxプリフライトオプション

私はstackoverflowで利用可能なものを読んで、最初にプリフライトを送信しようとしてランダムな "x-weird-header"を追加しようとしましたが、動作しませんでした。

私が理解できないもう1つのことは、ウェブページからの呼び出しに「Origin」ヘッダーを送信しますが、内線からの要求に「Origin」ヘッダーがないことです。

最初にOPTIONSを送信するにはどうすればよいですか?私の要求に「Origin」がないのはなぜですか?

ありがとうございます!

\t $.ajax({ 
 
\t url : url, /* url is https and it is called from a non ssl but same domain origin*/ 
 
\t  type : 'GET', 
 
\t  beforeSend : function(xhr) { 
 
\t   xhr.setRequestHeader("Accept", "application/json, text/plain, */*"); 
 
\t   xhr.setRequestHeader("Authorization", "BEARER " + auth_token); 
 
\t   xhr.setRequestHeader("x-weird-header", "utf8"); 
 
\t  }, 
 
\t  success : function (data) { 
 
\t  console.log(data); 
 
\t  }, 
 
\t  error : function (data, errorThrown) { 
 
\t  console.log(data); 
 
\t  } 
 
\t });

答えて

0

私はCross-Origin XMLHttpRequestで読んでは、これであなたを助けるかもしれないと思います。あなたのクロムエクステンションはリモートサーバーに要求を出しているので、クロスオリジンのアクセス許可が必要です。あなたのOPTIONSの問題に関しては、このSO threadで述べたように、このオプションを使用してみてください:

アクセス制御 - 許可 - ヘッダー:Content-Typeの、受け入れ、X-要求-で、 セッション