将冒号 (:) 传递给浏览器中的 Web 服务(用于测试)
Passing a colon (:) to a webservice in a browser (for testing)
我想使用浏览器将日期字符串传递给网络服务进行测试。我试过 Chrome 和 Firefox,但都出现以下错误:
Server Error in '/' Application.
A potentially dangerous Request.Path value was detected from the client (:
网络服务(RESTful)是这样访问的:
http://localhost:52936/Accounts/mod_date/2015-05-13T15%3A15%3A19
我试过用引号将日期引起来,但出现同样的错误。这可能吗?
尝试查询字符串参数
由于您只是在执行测试,因此您应该能够将字符串化的 DateTime
值作为查询字符串参数传递,并且应该避免您的服务出现问题:
/Accounts/mod_date?yourDateParameterName=2015-05-13T15:15:19
或者如果您想要更深入的方法,您可以考虑 using a suggestion like the one mentioned in this related discussion。
明确允许 :
个字符
Scott Hanselman 在 this blog post 中介绍了明确允许通过 URL 将某些字符传递给服务的想法。它基本上允许您定义传入时哪些值被视为 "dangerous",并且只需要您更改应用程序 web.config
中的 requestPathInvalidCharacters
设置:
<httpruntime requestvalidationmode="2.0">
requestPathInvalidCharacters="<,>,*,%,:,&,\"
/>
</httpruntime>
至:
<!-- Removes the colon ':' as a dangerous parameter -->
<httpruntime requestvalidationmode="2.0">
requestPathInvalidCharacters="<,>,*,%,&,\"
/>
</httpruntime>
这显然是非常有争议的东西,可能并非对所有情况都有用,但它是一个选项。
考虑 Postman(用于测试)
此外,出于测试目的,您可以考虑使用像 Postman 这样的服务,它非常适合执行此类 API 测试。
我想使用浏览器将日期字符串传递给网络服务进行测试。我试过 Chrome 和 Firefox,但都出现以下错误:
Server Error in '/' Application.
A potentially dangerous Request.Path value was detected from the client (:
网络服务(RESTful)是这样访问的:
http://localhost:52936/Accounts/mod_date/2015-05-13T15%3A15%3A19
我试过用引号将日期引起来,但出现同样的错误。这可能吗?
尝试查询字符串参数
由于您只是在执行测试,因此您应该能够将字符串化的 DateTime
值作为查询字符串参数传递,并且应该避免您的服务出现问题:
/Accounts/mod_date?yourDateParameterName=2015-05-13T15:15:19
或者如果您想要更深入的方法,您可以考虑 using a suggestion like the one mentioned in this related discussion。
明确允许 :
个字符
Scott Hanselman 在 this blog post 中介绍了明确允许通过 URL 将某些字符传递给服务的想法。它基本上允许您定义传入时哪些值被视为 "dangerous",并且只需要您更改应用程序 web.config
中的 requestPathInvalidCharacters
设置:
<httpruntime requestvalidationmode="2.0">
requestPathInvalidCharacters="<,>,*,%,:,&,\"
/>
</httpruntime>
至:
<!-- Removes the colon ':' as a dangerous parameter -->
<httpruntime requestvalidationmode="2.0">
requestPathInvalidCharacters="<,>,*,%,&,\"
/>
</httpruntime>
这显然是非常有争议的东西,可能并非对所有情况都有用,但它是一个选项。
考虑 Postman(用于测试)
此外,出于测试目的,您可以考虑使用像 Postman 这样的服务,它非常适合执行此类 API 测试。