- ベストアンサー
C言語でのOS判断について
Webから送信されたデータをC言語内でOS判断(MacかWindows)することは可能なのでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
環境変数にHTT_USER_AGENTが設定されていると思いますので、そこから取得できますよ。 ま、ウェブサーバーにもよるのですが。 ApacheやらIISやらであれば、基本は同じはずです。 ユーザーエージェントの書式は、ネットスケープ社の技術情報から取得できたはずです。 たしか、ブラウザ名、ブラウザバージョン、OS名、OSバージョンを入れましょうという指定があったかと思います。 ただし、Netscape、Mozila、Operaなどは、したがっていたはずですが、InternetExplorerはその標準に従っていなかったはずです。 また、標準の書式はありますが、ユーザーエージェントの内容は、ブラウザが自由に設定できるので、正規表現などで取ることが出来ません(難しい)。 それに、ユーザーエージェント情報をおくらないブラウザもあります。 携帯電話やロボットなどもウェブページへアクセス可能ですし、OSの指定がないものもありますので、お気をつけください。
その他の回答 (5)
- sha-girl
- ベストアンサー率52% (430/816)
CでCGIを作っているのですしょうか? epistemeさんおっしゃてますが ヘッダの情報しか判別の方法はありません。 http://www.kumei.ne.jp/c_lang/intro/no_84.htm ヘッダ情報はあくまでクライアントが送る情報ですので (javascriptも)偽装は可能です。
- sisya
- ベストアンサー率39% (97/244)
早急にと言う事でしたら JavaScriptで取得した判断情報を設定して submit()で飛ばすか Locateで情報を渡してリダイレクトしてみては如何でしょう?
補足
submitボタンを専用で用意ができないのです。 早急ではないので具体的に説明していただけないでしょうか・・・
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
#2の補足: > おそらくプロトコル・ヘッダ内にあるはずです。 HTTP User Agent ヘッダでしょうね。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> Webから送信されたデータをC言語内でブラウザ判別(NetscapeかInternet Explorer)することは可能なのでしょうか?JavaScriptでは判別はできるのですが・・・ その判別情報がデータ内にあるのなら、できるでしょう。 おそらくプロトコル・ヘッダ内にあるはずです。 RFCをお読みになればわかるのではないかと。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
送信されたデータ内に何らかの手掛かりがあればできるでしょうが、その手掛かりが必ずあるとは限らないので、'安全確実'な方法はないのでは?
補足
では、Webから送信されたデータをC言語内でブラウザ判別(NetscapeかInternet Explorer)することは可能なのでしょうか?JavaScriptでは判別はできるのですが・・・ 上記の結果をC言語のデータ内に送信したいのですが・・・
お礼
参考になりました。ありがとうございました。