同僚と私は、knockoutjs (Umbraco CMS 経由) を使用して通信している Web API に取り組んでいます。ブラウザーに組み込まれているクロス サイト スクリプティング セキュリティに遭遇するのを避けるために、Web サイト ディレクトリの仮想ディレクトリに API を配置しています。
ディレクトリに「愚かな」html ファイルを配置すると、API と問題なく「対話」できます。一方、umbraco から仮想ディレクトリ内の API を参照しようとしても、それは見つかりません。
私はさまざまな解決策を探しましたが、すべてではないにしても、ほとんどの場合、解決策が実際には役に立たない MVC3 を使用している場合です。
API に接続しようとする JavaScript の一部を次に示します。
function subscribe() {
if($("#siteForm").valid()=== true){
alert("add subscriptiooncalled");
var mySubscription = ko.toJS(ViewModel);
var json = JSON.stringify(mySubscription);
alert(json);
$.ajax({
url: API_URL,
cache: false,
type: 'POST',
contentType: 'application/json',
data: json,
success: function (data) {
alert("data is pushed");
},
error: function (error) {
alert("ERROR STATUS: " + error.status + " STATUS TEXT: " + error.statusText);
}
});
}else{
}
}
これを行ってもうまくいきません:
var root = location.protocol + "//" + location.host;
var API_URL = root + "/api/Subscriptions/";
アラートはテスト目的であることに注意してください。とにかく、コード内の URL は明らかに機能せず、完全な URL を挿入しても機能しません (http:// など)。
助言がありますか?役立つ場合は、Umbraco 4.7.2 を使用します。
編集 編集 編集 編集 編集 まあ、これはばかげています。いくつかの異なるソリューションの集大成かもしれませんし、そうでないかもしれませんが、すべて送信ボタンに行き着きました。うん。ボタンのタイプを「送信」から「ボタン」に変更すると、すべてが機能しました。ああ、これはばかげていた。