2012-03-07 27 views
11

からHTTPSサイトからHTTPサイトへのJSONPリクエストの送信に問題があります。HTTPSからHTTP JSONPリクエスト

これらのクロスサイト/「クロスプロトコル」リクエストをすべて正常に(警告付きで、エラーなしで)実行できる、有効な証明書付きhttpsでテスト環境があります。

Google ChromeのJavaScriptコンソール出力

The page at https://my.test.environment/ ran insecure content from http://non.secure.site/service?jsonCallback=jsonp1331132928704 

しかし、生産で、(Google App Engineの、appspotサブドメイン上)Google Chromeはユーザーの確認を待っているすべての要求をブロックしています。

Google ChromeのJavaScriptコンソール出力に特別な注意[ブロックされた]テキスト):

[blocked] The page at https://production.appspot.com/ ran insecure content from http://non.secure.site/service?jsonCallback=jsonp1331132928704 

は私がやっているのか分からは安全ではありませんが、このサービスは、サードパーティから提供されていますこれまで利用可能なSSL通信はありません。なぜ私はテスト環境で(警告付きで)働いているのではなく、appspot(Google App Engine)の下にいるのではないので、私はこれと本当に混同しています。

私は成功していないヘッダーを調べようとしました。

テスト環境ヘッダ:

Connection:Keep-Alive 
Content-Encoding:gzip 
Content-Language:es 
Content-Length:2524 
Content-Type:text/html;charset=utf-8 
Date:Wed, 07 Mar 2012 15:48:30 GMT 
Keep-Alive:timeout=15, max=100 
Set-Cookie: cookie_info... 
Vary:Accept-Encoding 

APPSpotヘッダ:

access-control-allow-credentials:false 
access-control-allow-origin:* 
cache-control:no-cache, must-revalidate 
content-encoding:gzip 
content-length:47890 
content-type:text/html; charset=utf-8 
date:Wed, 07 Mar 2012 14:52:02 GMT 
expires:Fri, 01 Jan 1990 00:00:00 GMT 
pragma:no-cache 
server:Google Frontend 
set-cookie: coookie_info.... 
status:200 OK 
vary:Accept-Encoding 
version:HTTP/1.1 

私はなぜこれがテストenvinromentに取り組んでいると同じアプローチがGoogle ChromeのでAPPSpotにブロックされている見当がつかない。

どのような考えですか?

+4

Chromeは、標準のHTTPSページ(例:特別な証明書の確認)とは異なり、Google HTTPSページを扱います。安全でないコンテンツの場合もそうでしょうか? – Robert

+0

あなたは正しいと思っています。実際、この問題はGoogleがGAEにアプリをデプロイしたときにのみ発生します(appspotはGoogleの証明書を使用しています)。私はそれにびっくりします。ありがとう! –

+0

私は自分のサーバーと(有効な)証明書で同じ問題を抱えています... – Stefano

答えて

1

apacheプロキシは、あなたの代わりにエンドポイントに要求を行います。ブラウザが同じドメインへのリクエストを行っていると思っているので、サービス(json、xml、画像、投稿、投稿、削除など)に対する非jsonpリクエストを持つことさえできます。

あなたnon.secure.siteバーチャルホストファイルには、あなたがそれを設定すると、あなただけのような...詳細は

http://non.secure.site/appspot/service?jsonCallback=jsonp1331132928704 

のGoogleはProxyPassをサービスを呼び出す

ProxyRequests Off 
ProxyPreserveHost On 
<Proxy *> 
    Allow from all 
</Proxy> 
ProxyPass /appspot https://production.appspot.com/ 
ProxyPassReverse /appspot https://production.appspot.com/ 

のようなものが含まれます

https://serverfault.com/questions/429404/help-me-understand-how-to-use-proxypass

0

あなた以外のオプションはありませんサードパーティのAPIを保護していないということは、MITMのAPI自体について考えることができます。

SSL経由でのみアクセスされるサーバーサイドスクリプトを作成し、タグとAPIの間でプロキシまたはフォワーダとして機能します。そうすれば、データに対する独自のチェックと検証を行うことでセキュリティを強化することができます。また、SSLで提供するため、「混在コンテンツ」のエラーは発生しません。

ところで、私はそれを試していませんが、GAEから提供されたGoogle証明書の下にあるサイトが異なる行動を取る可能性は常にあります。

希望すると助かります。

0

httpとhttpsの間で同じことをしても同じ問題が発生しました。これはクロスドメインの問題です。

あなたが必要とする最も重要なことは、curlを実行するために使用しているサーバーのサイドページが、HTTPからhttpsへの接続を許可するヘッダーをいくつか設定する必要があることです。これは以下のとおりです。

header("Access-Control-Allow-Origin: your https url"); 
header("Access-Control-Allow-Methods: POST, GET"); 
header("Access-Control-Max-Age: 1728000"); 

header("Access-Control-Allow-Headers: Content-Type, Connection, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control"); 
header("Connection: close"); 
関連する問題