2017-01-26 21 views
2

この質問は誰かにとって簡単で、私にとっては面白い状況になると思います。混合コンテンツjQuery ajax HTTPSリクエストがLaravelでブロックされました

私はLaravel 5.3サイトを持っており、さまざまなページにajaxリクエストがあります。 csrf_field()機能を使用しているため、正常に動作します。

しかし、Ajaxは、このエラーを生成します1ページがある:私はこのエラーに関する記事のトンを読んだ

var relUrl = '/fb/json/'; 
    var payload = { 
     levelType: levelType, 
     id: id, 
     aggLevel: aggLevel, 
     start: start, 
     end: end 
    }; 
    console.log(relUrl); 
    return $.ajax({ 
     type: 'GET', 
     dataType: 'json', 
     data: payload, 
     url: relUrl, 
     headers: { 
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
     }    
    }); 

Mixed Content: The page at 'https://example.com/fb/reports' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://example.com/fb/json?levelType=&id=&aggLevel=ad&start=&end='. This request has been blocked; the content must be served over HTTPS. 

私のjavascriptのは、このようになりますが。私は、httpsのURL全体に相対URLを変更する、または2つのスラッシュで開始するなど、たくさんの提案されたソリューションを試しました。

私はLaravelルートが動作する方法を変更しようとしましたが、現在はクエリ文字列のパラメータを使用しています。

私は以下のすべての記事を研究しました。

また、この1つのajaxクエリはサイトのパスワード保護された部分にあるため(の作業がサイトの公開/公開されている)、私はおそらくそれが問題。しかし、私はSSHを使ってプロダクションサーバにログインし、vimを使用して認証が必要な行を一時的に削除し、httpsエラーはまだになります。

ここからさらにデバッグするための手順はありますか?私のCloudwaysサーバーではどのようなログを表示できますか?

Cloudflareが干渉している可能性のあるものはありますか(他のajaxクエリはすべてhttps上で動作するため疑いがあります)。

ありがとうございます!

答えて

5

概要: それは私のLaravel web.php routesファイルが期待したものだから、私は(最後のスラッシュを削除)var relUrl = '/fb/json';var relUrl = '/fb/json/';を交換する必要がありました。クロームコンソールで


、私はhttps XHRリクエストは「キャンセル」とhttp要求に置き換えされていたことに気づきました。

それで、sshを使用してリモートプロダクションサーバーにログインし、vimを使用して認証の要件を一時的に無効にしました。

次に、Chromeコンソールで、絶対的なhttps URLを使用して新しいajaxコマンドを定義して実行しました。最後にクエリ文字列のパラメータを付けました。それはうまくいった(混在した内容のエラーはない)。それから、私はそのような相対URLを試してみました。

ペイロードやクエリー・ストリング・パラメータや後続のスラッシュを使用しない相対URLであっても機能します。

その後、後続のスラッシュをもう一度追加しても機能しませんでした。

リダイレクトパスや何が起こっているのかを簡単にトレースしたりデバッグしたりしたいと思っています。私はまだこの問題を確実に解明する方法を知っているのではなく、(何時間も)不器用な答えに遭遇したような気がします。

+0

これまでに解決しましたか?私は今それを扱っている。 – user1167442

+0

はい。私の最初の行を見てください。末尾のスラッシュを削除すると固定されました。だからこれが受け入れられた答えです。がんばろう。おかげさまで – Ryan

+0

私たちはそれを解決した。それは後続のスラッシュを削除していましたが、Apacheもスラッシュを追加するために何かをしていました。私たちの場合、それはやや狂気でした。 – user1167442

関連する問題