开发者

How can I simulate a 'down' website?

开发者 https://www.devze.com 2023-02-20 22:44 出处:网络
I am writing some failover code so that if my desktop app cannot connect to its website, it can instead try a backup website.

I am writing some failover code so that if my desktop app cannot connect to its website, it can instead try a backup website.

However, I cannot seem to figure out how to simulate a test if a website is 'down' or not. If I try an obvoiusly incorrect url such as "http://www.mybadsite.badTLD" , my ISP provider sends me to a default catch pa开发者_开发知识库ge.

Whereas when a site is truly down and you cannot connect to it, you get the browser message saying it cannot connect. This is what I need to emulate.

Thanks


Edit your hosts file to redefine the host you're trying to connect to. You can do 127.0.0.2 (Or anything unreachable).

You can also do a test with 0.0.0.0 - that returns a different error (Invalid IP). There may be some benefit to testing for that too.

Your ISP is redirecting for a DNS lookup failure, but anything resolved by your hosts file short-circuits that.


In order to test how your scripts deal with different responses I'd rather use a special server that generates different HTTP codes. One of them is httpstat.us

In your case, the correct http status code is 503 (Service Unavailable).

The 503 status code indicates that the server is currently unable to handle the request due to a temporary overload or scheduled maintenance

which will likely be alleviated after some delay.

For more information on http status codes I suggest reading This IETS Documentation


http://localhost

Assuming you do not have a server running locally...


Stumbling upon this on 2020, I found this:

https://www.mocky.io/

https://httpstat.us/


If you have a server that runs PHP, you could use the header() function to send headers for HTTP error codes back to your application.

header("HTTP/1.0 404: Not Found", true, 404);
or
header("HTTP/1.0 403: Forbidden", true, 403);
or
header("HTTP/1.0 500: Internal Server Error", true, 500);

These are some examples. Many server languages have methods for passing headers to the browser. Check this out for more error codes:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html


I used this web service as follows:

curl -v http://httpstat.us/<http status code>

For example:

curl -v http://httpstat.us/503

The result is:

> GET /503 HTTP/1.1
> Host: httpstat.us
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 503 Service Unavailable
...
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号