WCF を 用いて RESTful サービス を作成していると、HTTP レスポンス ヘッダー を任意に変更 ── 場合によっては カスタムヘッダー を追加 ── することで、
クライアント側の処理を対応しやすくしたい場合があるかと思います。
ここでは、HTTP レスポンス ヘッダー を変更する サンプルコード を記載します。
基本的には OutgoingWebResponseContext クラス を利用することで レスポンスヘッダー を変更できるようです。
※ WCF を 用いた RESTful サービス の構築方法 は こちら。
Content-Type の 書き換え
ステータス の 書き換え
カスタムヘッダー の 追記
8月 2013年
UserAgent を 用いた IE11 の判別方法
(2015/01/04 Windows 10 Technical Preview の useragent を追記)
(2013/10/22 jQuery プラグイン でも判定できるようにしました。元記事は こちら 。)
Internet Explorer 11 から UserAgent 文字列が変更になるそうです
(詳細は こちら)。
その結果、今まで MSIE を使った Internet Explorer の判別が出来なくなります。
これでは困るので、従来の IE も含めて IE であることを判別できる JavaScript を以下で記載します。
IE11 の UserAgent サンプル
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
Mozilla/5.0 (Windows NT 6 ...
Akinari Tsugo
0:55
Internet Explorer,
JavaScript
Function.prototype.bind を用いた イベント の アタッチ、デタッチ
.ref dt em {
float: left;
dispaly: inline-block;
width: 5em;
}
.ref dt span {
margin-left: 3em;
}
Function.prototype.bind( context ) を用いると "スコープ (this) の固定" が出来ます。
JavaScript で オブジェクト指向 な開発を行っていると、"スコープ (this) の固定" は大変便利です。
ここでは 関数の詳細 と 使用例 (jQuery) を記載します。
.bind(context [, arg1 [, arg2 [, ...]]])
概要
"this" および 引数 を固定して、新しい関数を生成します。
引数
{object}context
関 ...
Akinari Tsugo
0:55
closure tools,
JavaScript,
jQuery
クロスドメイン制約 を JSONP で 回避 (WCF + jQuery)
クロスドメイン制約 を 回避 する サーバー実装 を WCF サービス を用いて JSONP で実現します。
クロスドメイン通信 を実現するには "サーバー側" と "クライアント側" の2カ所に対して手を入れる必要があるかどうか考えます。
ここでは、"サーバー側" に手を加えて クロスドメイン通信 を実現する方法を載せます。
具体的には、JSONP形式 で レスポンス を返せるようにすることで、jQuery 等 で クロスドメイン通信 を行えるようにします。
今回は、WCF サービス を利用しての実装を行います。
サーバーサイド (WCF サービス)
クライアントサイド (jQuery)
※ WCF サービス で JSONP に対応した サービス を実装した場合、コールバック関数名 を指定する パラメター は callback になるようです。 ...
Akinari Tsugo
21:48
C#,
jQuery,
WCF,
クロスドメイン通信
WCF を利用した RESTful Web サービス の 作成
.checked {
background: url('https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiagX8RLPKkTSVDoEkioLJfC1fWye1WMynuRz0evwcfNw9aip5NW7GpjsbkpKp_0_TlBtv5zxgkbVXZrp-TEEIAFRrINBoNhUGw2BnODqzpR6fhWGuTeuDNxBM4dDQqZRisgfIuIKWPHBY/s1600/checked.png') center center no-repeat;
width: 15px; height: 15px;
display: inline-block;
}
.unchecked {
background: url('https://blogger.googleus ...
Akinari Tsugo
0:11
ASP.NET,
C#,
Visual Studio,
WCF
クロスドメイン制約 を JSONP で 回避 (ASP.NET MVC + jQuery)
クロスドメイン制約 を 回避 する サーバー実装 を ASP.NET MVC を用いて JSONP で実現します。
クロスドメイン通信 を実現するには "サーバー側" と "クライアント側" の2カ所に対して手を入れる必要があるかどうか考えます。
ここでは、"サーバー側" に手を加えて クロスドメイン通信 を実現する方法を載せます。
具体的には、JSONP形式 で レスポンス を返せるようにすることで、jQuery 等 で クロスドメイン通信 を行えるようにします。
サーバーサイド (ASP.NET MVC)
クライアントサイド (jQuery)
今回は次の図に示すような環境でのクロスドメイン通信を想定し、
この状況でサーバーBにおいて JSONP 形式 で応答する 実装 を載せます。
個人的な趣味趣向の都合で ASP.NET MVC でサンプル ...
Akinari Tsugo
16:57
ASP.NET,
C#,
jQuery,
クロスドメイン通信
クロスドメイン制約 を サーバー設定 で 回避
.inputvalue dt
{
width: 3em;
float: left;
}
.inputvalue dd
{
margin-left: 3em;
}
クロスドメイン通信 を実現するには "サーバー側" と "クライアント側" の2カ所に対して手を入れる必要があるかどうか考えます。
ここでは、"サーバー側" の設定変更で GET リクエスト に関してクロスドメイン通信を実現する方法を載せます。
具体的には、Access-Control-Allow-Origin ヘッダー を無条件に返す設定をすることで、
jQuery 等 で クロスドメイン通信 を行えるようにします。
Akinari Tsugo
0:53
JavaScript,
jQuery,
クロスドメイン通信
IE8, IE9 環境 において jQuery で クロスドメイン通信 する方法
クロスドメイン通信 を実現するには "サーバー側" と "クライアント側" の2カ所に対して手を入れる必要があるかどうか考えます。
ここでは、"クライアント側" ── 特に IE8, IE9 ── において クロスドメイン通信 を実現する 実装方法 を記載します。
IE8、 IE9 で クロスドメイン通信 を行う場合、 XDomainRequest を利用します。
この XDomainRequest は XMLHttpRequest と似て非なるもの(詳細は こちら)なので、そのまま jQuery.ajax で使うことが出来ません。
jQuery の バグトラック によると、この違いは プラグイン で吸収するそうです。
で、その プラグイン と 使い方 は以下の通りです。
XDomainRequest 対応 プラグイン を利用した クロスドメイン通信 の 実装
...
Akinari Tsugo
0:53
Internet Explorer,
JavaScript,
jQuery,
クロスドメイン通信
XDomainRequest と XMLHttpRequest level 2 の 違い
.table {
border: 1px solid #efefef;
border-collapse: collapse;
width: 100%;
}
.table thead {
font-weight: bold;
background-color: #fcfcfc;
text-align: center;
}
.table th, .table td{
border: 1px solid #efefef;
padding: 0.3em 0.8em;
}
Internet Explorer 系列 で クロスドメイン通信 を行う場合、
IE8, IE9 だと XDomainRequest 、IE10 では XMLHttpRequest を利用します。
ここでは、似て非なる両者を比べてその違いをまとめます。 ...
Akinari Tsugo
0:16
Internet Explorer,
JavaScript,
クロスドメイン通信