バージョン選択

フォーラム

メニュー

オンライン状況

14 人のユーザが現在オンラインです。 (11 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 14
もっと...

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

質問 > 管理機能 > SSL化でajaxが動かなくなった

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2016/10/26 16:04
対応状況: −−−
一人前
登録日: 2016/7/22
居住地: 愛媛県
投稿: 87
SSL化でajaxが動かなくなった
EC-CUBE3で構築したサイトを開発環境から本番環境に移行した時に、ajax(商品画像の登録など)が動作しなくなりました。
環境の違いは、SSL通信(http→https)に変わったことぐらいです。
ajaxのPOST先であるurlをtwig内で{{ url }}で生成していますが、httpsからhttpにPOSTしようとしてエラーになっています。

まず、.htaccessに次を追加しました。
    <IfModule mod_rewrite.c>
    RewriteCond %{ENV:HTTPS} !^on$
    RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
    RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    </IfModule>


それでも解決しなかったため、デバッグしてURLを生成しているソースを突き止め、無理やりにスキームを変更することでとりあえずは動作するようになりました。
vendor/symfony/routing/Generator/UrlGenerator.php(202行目あたり)
            $scheme = $this->context->getScheme();
            $scheme = 'https';


できれば根本的に解決したいと思いますので、解決策をお教え願います。

サーバーはさくらを使っており、本当か嘘か、さくらとEC-CUBEは相性が悪いという噂も聞きました。
また、index.phpがどちらの環境もEC-CUBEのルートフォルダ外にあります。

■環境
サーバー さくら
EC-CUBE 3.0.10
PHP 5.6.24

■構成
root
 ┣ eccube-3.0.10
 ┃ ┣ app
 ┃ ┣ html
 ┃ ┣ src
 ┃ ┗ vendor
 ┗ www   ★外出ししている
   ┣ .htaccess
   ┗ index.php

■ajaxのurl生成例
src/Eccube/Resource/template/admin/Product/product.twig
{% block javascript %}
<script>
$(function() {
    var count_add = {{ form.add_images|length|default(0) }};
    $('#{{ form.product_image.vars.id }}').fileupload({
        url: "{{ url('admin_product_image_add') }}",
        type: "post",
        dataType: 'json',
        done: function (e, data) {
            $('#progress').hide();
            $.each(data.result.files, function (index, file) {
                var path = '{{ app.config.image_temp_urlpath }}/' + file;
                var $img = $(proto_img.replace(/__path__/g, path));
                var $new_img = $(proto_add.replace(/__name__/g, count_add));
                $new_img.val(file);
                $child = $img.append($new_img);
                $('#thumb').append($child);
                count_add++;
            });
            hideSvg();
            updateRank();
        },
        fail: function (e, data) {
            alert('アップロードに失敗しました。');
        },
        always: function (e, data) {
            $('#progress').hide();
            $('#progress .progress-bar').width('0%');
        },
        start: function (e, data) {
            $('#progress').show();
        },
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        maxFileSize: 10000000,
        maxNumberOfFiles: 10,
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);
            $('#progress .progress-bar').css(
                    'width',
                    progress + '%'
            );
        },
        processalways: function (e, data) {
            if (data.files.error) {
                alert("画像ファイルサイズが大きいか画像ファイルではありません。");
            }
        }
    });
});
</script>
{% endblock javascript %}
red
投稿日時: 2016/10/27 22:11
対応状況: −−−
登録日: 2010/2/15
居住地:
投稿: 1027
Re: SSL化でajaxが動かなくなった
なにを根本的というかは難しいですが、(たぶん)さくらのSNI SSLの問題なので強引に対応するしかないと思います


----------------
EC-CUBEのカスタマイズ承ります
お気軽にお問い合わせ下さい
https://www.ec-cube.net/integrate/partner/partner.php?partner_id=690

seasoft
投稿日時: 2016/10/28 1:04
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7331
Re: SSL化でajaxが動かなくなった
さくらに限らず、共用サーバーは何らかの制約や独自仕様はあると思いますよ。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

h_tanaka
投稿日時: 2016/10/28 8:56
対応状況: −−−
一人前
登録日: 2016/7/22
居住地: 愛媛県
投稿: 87
Re: SSL化でajaxが動かなくなった
redさん、神さん、
ご返信ありがとうございます!

サーバー側の問題であれば根本解決は難しいですね。
やりたかったのは、環境のスキームに依存せず動作させたかったのですが、今考えてみれば環境に合わせてdefineを変えればいいですね。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

 

ログイン


EC-CUBEペイメント

統計情報

総メンバー数は19,119名です
総投稿数は79,892件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1618
4
yuh
1313
5
red
1027
6
fukap
907
7
shutta
827
8 ramrun 789
9
tsuji
778
10
tao_s
646


ネットショップの壺

EC-CUBEガイドブック
Copyright© LOCKON CO.,LTD. All Rights Reserved.