微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apache mod_rewrite 使用 WordPress 阻止 HTTP OPTIONS 请求

如何解决Apache mod_rewrite 使用 WordPress 阻止 HTTP OPTIONS 请求

我的 .htaccess 中有一个有效的 mod_rewrite cond/rule,它完美地停止了 HTTP OPTIONS 请求。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">


<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/constraint1"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <androidx.appcompat.widget.AppCompatButton
        android:id="@+id/startButton"
        android:layout_width="203dp"
        android:layout_height="110dp"
        android:background="#02F837"
        android:onClick="start"
        android:text="Go!"
        android:textColor="#000000"
        android:textSize="50sp"
        android:visibility="visible"
        app:backgroundTint="#00F10A"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:ignore="OnClick"
        android:layout_marginTop="200dp"/>

    <TextView
        android:id="@+id/timerTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#F4DC01"
        android:gravity="center"
        android:padding="5dp"
        android:text="30s"
        android:textColor="#000000"
        android:textSize="35sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.046"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.029" />

    <TextView
        android:id="@+id/pointsTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#F4DC01"
        android:gravity="center"
        android:padding="5dp"
        android:text="0/0"
        android:textColor="#000000"
        android:textSize="35sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.953"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.029" />

    <TextView
        android:id="@+id/sumTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#58F15E"
        android:gravity="center"
        android:padding="15dp"
        android:text="31 + 12"
        android:textColor="#000000"
        android:textSize="35sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.03" />


 </androidx.constraintlayout.widget.ConstraintLayout>


 <androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/constraint2"
    android:layout_marginTop="50sp"
    app:layout_constraintTop_toBottomOf="@id/constraint1">

    <androidx.gridlayout.widget.GridLayout
        android:id="@+id/gridLayout"

        android:layout_width="match_parent"
        android:layout_height="match_parent"

        app:layout_constraintTop_toTopOf="parent"
        tools:layout_editor_absoluteX="202dp">

        <!--
             Now you can add whatever button you want to add here
             -->

    </androidx.gridlayout.widget.GridLayout>
    
</androidx.constraintlayout.widget.ConstraintLayout>
    



</androidx.constraintlayout.widget.ConstraintLayout>

我也有 Apache 配置(用于腰带和背带):

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^OPTIONS
RewriteRule .* - [F]

正如这里的最佳答案所建议的那样:Disable OPTIONS HTTP on Apache Server

但是,wordpress 将以下内容添加到同一个 .htaccess 文件中:

<Location />
    <LimitExcept GET POST>
        order deny,allow
        deny from all
    </LimitExcept>
</Location>

这样做会杀死我的 HTTP OPTIONS 杀手,正如对此请求的响应所示:

# BEGIN wordpress
# The directives (lines) between "BEGIN wordpress" and "END wordpress" are
# dynamically generated,and should only be modified via wordpress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.PHP$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.PHP 
</IfModule>
# END wordpress

我尝试将两个 mod_rewrite 规则组合成多种组合。我要么得到 500,要么 wordpress 网站运行良好并且 OPTIONS 请求得到尊重。

如何让 wordpress 网站正常工作,同时对 HTTP OPTIONS 请求发出拒绝响应?

解决方法

我发现通过在 WordPress HTACCESS 指令上方添加以下内容解决了该问题:

RewriteEngine on
RewriteCond %{THE_REQUEST} !^(POST|GET)\ /.*\ HTTP/1\.1$
RewriteRule .* - [F]

我在这里找到了这个建议: https://protonts.wordpress.com/2013/08/15/how-to-disable-http-options-method/

在这个阶段我不清楚为什么上面的方法有效,而下面的方法无效

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^OPTIONS
RewriteRule .* - [F]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。