GVKun编程网logo

Http响应X-Powered-By, X-Robots-Tag,X-Frame-Options(Http响应码)

16

对于Http响应X-Powered-By,X-Robots-Tag,X-Frame-Options感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍Http响应码,并为您提供关于.htaccess

对于Http响应X-Powered-By, X-Robots-Tag,X-Frame-Options感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍Http响应码,并为您提供关于.htaccess 导致 500错误 Options not allowed here、.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotAcce...、android – MediaMetadataRetriever .getFrameAtTime(long,option)崩溃、android – 如何使用Fragments隐藏NavigationDrawer上的OptionsMenu?的有用信息。

本文目录一览:

Http响应X-Powered-By, X-Robots-Tag,X-Frame-Options(Http响应码)

Http响应X-Powered-By, X-Robots-Tag,X-Frame-Options(Http响应码)

在Http响应中以X-开头的消息具有权威性,这些标志涉及到版权,搜索引擎Robots协议,浏览器必须执行指令。可见其具有强制性,权威性的特点。

X-Powered-By:表示版权信息。

X-Powered-By:ThinkPHP.cn

在html 元信息meta中类似于

<meta name="Copyright" Content="All Rights Reserved by ThinkPHP.cn" />
<meta name="author" content="ThinkPHP.cn" />

X-Robots-Tag

搜索引擎指令标签,类似于 robots.txt协议中的一些项,不同点是X-Robots-Tag是显示在页面中的

   http.setHeader(''X-Robots-Tag'',''nofollow,noIndex'');
<meta name="robots" content="All|None|Index|Noindex|Follow|Nofollow">
<!--注意,以上列出了一些可选值,实际操作中 需要用"逗号"隔开->
<meta name="robots" content="Noindex,Nofollow">

需要指出的是,在SEO中,为了让搜索引擎不要去权值不高的页面,需要调整超链接。

<a href="signin.php" rel="nofollow">sign in</a>

X-Frame-Options

这个是一个和iframe相关的响应信息

使用 X-Frame-Options 有三个可选的值:
DENY:浏览器拒绝当前页面加载任何Frame页面
SAMEORIGIN:frame页面的地址只能为同源域名下的页面
ALLOW-FROM:允许frame加载的页面地址

在开发中的使用

#PHP代码:
header(''X-Frame-Options:Deny'');
#Nginx配置:
add_header X-Frame-Options SAMEORIGIN
#Apache配置:
Header always append X-Frame-Options SAMEORIGIN

当然,这样也可以配合 Reference防止不安全外部站点的通过iframe进行XSS攻击。

使用 SAMEORIGIN的结果会导致‘

Refused to display ''http://hostname.com'' in a frame because it set ''X-Frame-Options'' to ''SAMEORIGIN''.

-------------------------------------------------------------------------------------------------------------------------

RSS源,欢迎关注

 <link rel="alternate" type="application/rss+xml" title="isOkay最新博客" href="http://my.oschina.net/ososchina/rss" />

Try doing it;

.htaccess 导致 500错误 Options not allowed here

.htaccess 导致 500错误 Options not allowed here

是部署laravel,在本地开发(os x)没有问题,但是部署到服务器上测试(只有一台windows服务器,apache+php5.4),打开是500错误,看日志是 :

.htaccess Options not allowed here

请教解决的方法。这个服务器放其他的PHP程序都没有问题,就这个laravel,.htaccess是官方的,我本地没有这方面出过错从来没有改动过。

回复内容:

是部署laravel,在本地开发(os x)没有问题,但是部署到服务器上测试(只有一台windows服务器,apache+php5.4),打开是500错误,看日志是 :

.htaccess Options not allowed here

请教解决的方法。这个服务器放其他的PHP程序都没有问题,就这个laravel,.htaccess是官方的,我本地没有这方面出过错从来没有改动过。

Apache的httpd.conf有设置"AllowOverride All"了吗?

.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotAcce...

.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotAcce...

当想要返回的是json数据,produces写的"text/plain",会报错

@RequestMapping(value = "/getDynamicByDynamicId1",produces = "text/plain")
@ResponseBody
public Dynamic getDynamicByDynamicId1(){
System.out.println();
return dynamicMapper.getDynamicByAnnotationFromDynamicId(1l);
}

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Nov 21 15:01:12 CST 2019
There was an unexpected error (type=Not Acceptable, status=406).
Could not find acceptable representation
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
 
改为
@RequestMapping(value = "/getDynamicByDynamicId1",produces = "application/json")
@ResponseBody
public Dynamic getDynamicByDynamicId1(){
System.out.println();
return dynamicMapper.getDynamicByAnnotationFromDynamicId(1l);
}

android – MediaMetadataRetriever .getFrameAtTime(long,option)崩溃

android – MediaMetadataRetriever .getFrameAtTime(long,option)崩溃

我有一个循环,我试图每1/10秒从视频中提取一个帧.但在19帧(视频的1.9秒)后,我在Logcat上收到以下错误:
01-22 11:59:15.498: E/OMXCodec(38): [OMX.google.h264.decoder] Timed out waiting for output buffers: 0/0
01-22 11:59:15.598: E/MetadataRetrieverClient(38): Failed to capture a video frame
01-22 11:59:15.598: E/MediaMetadataRetrieverJNI(572): getFrameAtTime: videoFrame is a NULL pointer
01-22 11:59:15.598: D/AndroidRuntime(572): Shutting down VM
01-22 11:59:15.598: W/dalvikvm(572): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
01-22 11:59:15.608: E/AndroidRuntime(572): FATAL EXCEPTION: main
01-22 11:59:15.608: E/AndroidRuntime(572): java.lang.NullPointerException

这是我正在使用的代码:

File videoPath = new File(Environment.getExternalStorageDirectory(),"test.mp4");
String video = videoPath.getAbsolutePath();
MediaMetadataRetriever vidFile = new MediaMetadataRetriever();
vidFile.setDataSource(video);

//Create folder to store images
String storageFolder = "/Storage";
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File newFolder = new File(extStorageDirectory + storageFolder);
newFolder.mkdir();

String value = vidFile.extractMetadata(MediaMetadataRetriever.MetaDATA_KEY_DURATION);
long vidLength = (Long.parseLong(value)/1000); //Returns milliseconds - divide by 1,000
//Video length = 30037ms - result is 30.037s

for(int i = 0; i <= 10*vidLength; i++,image++) //10*vidLength since I'm getting frames every 1/10th sec
{
    Bitmap bmp = vidFile.getFrameAtTime(100000*i,MediaMetadataRetriever.OPTION_CLOSEST);
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.PNG,100,bytes);
    String imagename = String.format(Locale.ENGLISH,"%03d",image);
    File f = new File(Environment.getExternalStorageDirectory() + storageFolder + File.separator + imagename + ".png");
    f.createNewFile();
    FileOutputStream fo = new FileOutputStream(f);
    fo.write(bytes.toByteArray());
    fo.close();

    //Don't seem to make a difference one way or the other
    bytes.flush(); 
    bytes.close();  
}

就像我说的,它应该得到~300帧,但只能设法在崩溃前提取19帧,但我不明白为什么会发生NULL指针错误.

提前致谢

解决方法

您是否尝试过使用 FFmpegMediaMetadataRetriever lib而不是MediaMetadataRetriever?

另外,从logcat上的这一行:

01-22 11:59:15.598: E/MediaMetadataRetrieverJNI(572): getFrameAtTime:
videoFrame is a NULL pointer

我会尝试记录for循环的每一行,如Log.d(“MyApp”,“Param of getFrameAtTime”(100000 * i));

我知道你已经知道哪个帧是问题(19/20),但只是看看在变成空指针之前该变量会发生什么(也许你可以使用Long i而不是int i?).

另外,您是否尝试使用上述建议来使用MediaMetadataRetriever.OPTION_CLOSEST_SYNC而不是OPTION_CLOSEST?

android – 如何使用Fragments隐藏NavigationDrawer上的OptionsMenu?

android – 如何使用Fragments隐藏NavigationDrawer上的OptionsMenu?

我正在创建 Android应用程序,我尽可能地尊重最新的Android可用性标准.特别是,我正在使用导航栏来准备用户界面,我试图确保与2.1 Android版本的兼容性.要了解这个问题,该项目包括:

>主要活动;
>导航抽屉;
>四个片段(与其相关联的布局).

我打开导航栏时遇到的问题是:虽然每个Fragment都有其特定的菜单,当我打开导航栏时,它被添加到导航栏的菜单中.我尝试了几种方法(invalidateOptionMenu(),menu.clear(),操作函数isDraweropen()和isDrawerClose()等),但是打开导航栏时我不能删除Fragment的菜单.

这些是我的代码的一些片段,其中大部分是由Android Studio生成的,我使用的是IDE:

主要活动:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (!mNavigationDrawerFragment.isDraweropen()) {
        // Only show items in the action bar relevant to this screen
        // if the drawer is not showing. Otherwise,let the drawer
        // decide what to show in the action bar.
        getMenuInflater().inflate(R.menu.global,menu);
        restoreActionBar();
        return true;
    }
    return super.onCreateOptionsMenu(menu);
}

其中“全局”是具有古典“ic_action_overflow”的简单菜单.

在我的碎片我有:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

@Override
public void onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
}

@Override
public void onCreateOptionsMenu(Menu menu,MenuInflater inflater) {
    super.onCreateOptionsMenu(menu,inflater);
    inflater.inflate(R.menu.fragment1,menu);
}

(与其他片段相同).

有人可以给我一些建议如何采取行动?

解决方法

我使用Android Studio生成的样板代码面临同样的问题,并通过修改NavigationDrawerFragment.onPrepareOptionsMenu()中的菜单来工作(在我的情况下,我想完全清除菜单):
@Override
public void onPrepareOptionsMenu(Menu menu) {
    if (mDrawerLayout != null && isDraweropen()) {
        menu.clear();
    }
}

大概如何重新创建选项菜单:

>由IDE生成的NavigationDrawerFragment在打开或关闭抽屉时调用supportInvalidateOptionsMenu().
> onCreateOptionsMenu gets called:托管活动和每个添加的片段都有机会提供菜单项.
> onPrepareOptionsMenu gets called:再次,托管活动和每个添加的片段都有机会修改菜单.

这些片段是iterated in the order they were added.在步骤2和3中途没有办法停止通话链.

所以这个想法是让NavigationDrawerFragment在其onPrepareOptionsMenu上对菜单进行最后一刻的更改,而不会有其他碎片.

如果您需要让其他片段在onPrepareOptionsMenu中执行某些操作,则可能需要设置其他片段,以便它们可以确定抽屉是否打开,并相应地更改其行为.这可能意味着可以在主机活动中添加一个isDrawerOpen方法,或者将其中的抽屉标识符传递给该片段,就像在NavigationDrawerFragment.setup()中完成一样.

今天的关于Http响应X-Powered-By, X-Robots-Tag,X-Frame-OptionsHttp响应码的分享已经结束,谢谢您的关注,如果想了解更多关于.htaccess 导致 500错误 Options not allowed here、.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotAcce...、android – MediaMetadataRetriever .getFrameAtTime(long,option)崩溃、android – 如何使用Fragments隐藏NavigationDrawer上的OptionsMenu?的相关知识,请在本站进行查询。

本文标签: