簡體   English   中英

如何只允許一種方法或Web服務的GET請求?

[英]How do I allow the GET request for only one method or webservice?

正如我在這里發現的那樣 ,我可以更改webconfig以允許/禁止webservices中的方法。

我只需要一種方法成為GET,對於其他方法則應該是POST,是否有一種方法可以僅配置一種方法(如果沒有其他方法,則可以配置Web服務)以接受GET請求? 我在IIS7上。

取決於Web服務器。

例如,您可以針對Apache中的某些請求返回錯誤。

使用Limit指令:

<Directory />
  Options All
  AllowOverride All
  <Limit POST PUT DELETE CONNECT PROPFIND PROPPATCH>
    # Require valid-user
    Deny from all
  </Limit>
</Directory>

編輯 -剛剛找到有關此文檔: http : //httpd.apache.org/docs/2.0/mod/core.html#limit

您可以通過在IIS中或通過web.config中定義的httpHandler映射更改處理程序映射來完成此操作。

或者,您可以讓HttpModule做到這一點。

但是,由於您已經在使用asp.net(通過標簽進行判斷),並且只有一個例外,所以一種更簡單的方法可能就是在該級別上進行。 如果不是,則從HttpModule執行此操作的邏輯幾乎相同。

在您的頁面基類中(如果尚未在System.Web.UI.Control.Page和您自己的頁面之間定義抽象類,可能值得一看,這是放置常用方法的方便位置)一個在主頁面加載處理程序之前被調用的虛擬成員(例如,有一個名為OnLoad的方法先調用此方法,然后再調用“真實”頁面加載方法)。

在此方法中,檢查使用的http方法,如果不正確,則將狀態代碼設置為405,輸出錯誤頁面以顯示加分標記,然后停止所有處理。

在允許獲取,覆蓋和更改檢查方法的頁面中。

如果您的類結構不允許輕松完成此操作,則HttpModule方法將更容易。 在這里,您必須檢查URI才能知道允許使用哪種方法,但是其余的幾乎相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM