Hatena::ブログ(Diary)

satoru.netの自由帳 このページをアンテナに追加 RSSフィード

170902Satday

'X-Frame-Options' to 'sameorigin'でpdfをiframeできない時の対処法

クリックジャッキング対策の対策

Refused to display '[pdfURL]' in a frame because it set 'X-Frame-Options' to 'sameorigin'.

と出てiframe内で外部サイトのPDFを表示できない場合の対処法

解決

googlePDFビュアーを通してembedのパラメータonにして表示させればok

iframeで表示されない。

<iframe src=[PDFのURL]></iframe>

iframeできるようになる

<iframe src="https://drive.google.com/viewerng/viewer?url=[PDFのURL]&embedded=true"></iframe>

パラメーターにembedded=trueを入れる

参考リンク

https://stackoverflow.com/questions/27825039/sameorigin-policy-interfering-with-google-docs

140214Friday

tableView関連めも

UItableViewでUITableCellの選択時に別ページに移動

1.移動させたいページ同士をstoryboardで結ぶ。(modal)
2.segueにID設定する
3.ViewController.m
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
   [self performSegueWithIdentifier:@"設定したsegueのID" sender:self];
}

移動先ページから戻るボタンで元ページに戻る

1.ViewController.m 移動元に関数設置する
//戻る用メソッド
- (IBAction)returnMainView:(UIStoryboardSegue *)segue
{
    ;
}
2.移動先のページから戻る時はstoryboard上からUIButtonとexitを結びつける-

別のviewcontrollerにパラメーターを渡す

文字列でも配列でもハッシュでも何でも渡せる。

渡したいときは3つのファイルをいじる。

1.ViewController.m
  • importに渡す先のヘッダーを入れる
  • 変数を設定する

#import "detailPage.h"

...

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([[segue identifier] isEqualToString:@"toSecondPage"]) {
        
        //遷移先にデータをパラメーターを渡す
        NSIndexPath *indexPath = [_myTableView indexPathForSelectedRow];
        detailPage *vc = [segue destinationViewController];
        
        //NSStringを渡す
        vc.receiveString = items[indexPath.row];

        //NSArrayを渡す
        vc.receiveArray = @[@"a",@"b",@"c"];
        
        //NSDictionaryを渡す
        vc.receiveDict = @{@"key":@"unko",@"key2":@"value2"};

    }
}
2.SecondPage.h

@property NSString *receiveString;
@property NSArray *receiveArray;
@property NSDictionary *receiveDict;

@end

3.SecondPage.m

...

@synthesize receiveString;
@synthesize receiveArray;
@synthesize receiveDict;

...

- (void)viewDidLoad
{
    [super viewDidLoad];

..
    
    NSLog(@"string=[%@]",receiveString);
    NSLog(@"array=[%@]",receiveArray[0]);
    NSLog(@"dictionary=[%@]",receiveDict[@"key"]);

..    
    
    
}


131022Tueday

[]openpne 2.x アクセスブロックページで相手のニックネーム&IDを表示させる

相手のプロフページのリンクを踏むと、エラーページにリダイレクトされる仕様なので、

「先にアクセスブロックされると、相手のIDがわからなくて泣き寝入りするしかない!どうにかして!」

というご相談がユーザから着たので対応。

アクセスブロックされたエラーページで相手のニックネーム、IDを表示させるように修正。

まあ、ちょっと詳しい人ならURLみればわかるんだけどねえ。。


1.アクセスブロック時にmember_idのパラメータを付与させてからリダイレクトするように

/webapp/modules/pc/page/f_home.php 28行目あたり

        if (db_member_is_access_block($u, $target_c_member_id)) {
            openpne_redirect('pc', 'page_h_access_block',array("target_c_member_id" => $target_c_member_id));
        }

2.飛んできたパラメータをテンプレの変数にセット

/webapp/modules/pc/page/h_access_block.php 14行目あたり

        if($_REQUEST['target_c_member_id'] && preg_match("/^\d+$/",$_REQUEST['target_c_member_id'])){
         $target_c_member = db_member_c_member_with_profile($_REQUEST['target_c_member_id'], 'private');
         $this->set('target_c_member', $target_c_member);
        }

3.validationを設置(数値の改変予防)

/var/www/sites/pocha3.com/webapp/modules/pc/validate/page

[target_c_member_id]
type = "int"
required = 0
min = 1

4.エラーページのテンプレHTML

/var/www/sites/pocha3.com/webapp/modules/pc/templates/h_access_block.tpl 適当なとこに

<div class="block">
<p>大変、申し訳ございません。<br>
({if $target_c_member})
({$target_c_member.nickname})さん (ID:({$target_c_member.c_member_id})) のページにはアクセスできません。</p>
({else})
申し訳ございませんがこのメンバーのページにはアクセスできません。
({/if})
</div>

110712Tueday

[]Apacheのログを完全に出力しないように

それぞれ httpd.confに記述

方法1: /dev/null に出力

CustomLog /dev/null common

でもこれだと/dev/null→破棄が繰り返されるわけだからちょっと非効率だ

方法2: 条件指定に env=0

CustomLog /dev/null common env=0

本来、除外機能のパラメータに常に0を渡して完全ブロック。

これだと完全に出てない!いい感じ!

方法3: mod_log_config.so を除外

#LogFormat XXXX

#CustomLog XXXX

#LoadModule log_config_module modules/mod_log_config.so

ログ関連のモジュールをコメントアウト。(ErrorLogはlog_config_moduleをコメアウトしても有効みたい)

これでも方法2と同じ結果になったけど、これだとたまにログを見たいときの復旧がちょっとめんどい。


結論

方法2env=0が楽

090416Thuday

[]pythonのお勉強めも

HelloWorld with ヒアドキュメント

#!-*- coding:utf-8 -*-"
#!/usr/bin/env python
print "Content-type:text/html;charset=utf-8\n\n";
print """
Hello World ヒアドキュメント便利
"""

日本語を表示するには

行頭に

#!-*- coding:utf-8 -*-"

をいれる。


パラメータ取得

#!-*- coding:utf-8 -*-"
#!/usr/bin/env python
import cgi
print "Content-Type:text/html\n\n"
pm= cgi.FieldStorage()
print pm["name"].value

外部URL表示

#!-*- coding:utf-8 -*-"
#!/usr/bin/env python

import urllib2
import cgi

pm = cgi.FieldStorage();

print "Content-type:text/html;charset=utf-8\n\n";

request = urllib2.Request(pm["url"].value)
request.add_header('User-Agent','Existences PING Scanner 0.8b...')
opener = urllib2.build_opener()
body = opener.open(request).read()

print body;

©satoru.net
Mail Twitter