私のMVCアプリでは、Javascriptを返しています。Howveer、私はビューで偽造防止トークンを使用しているので、レンダリングされた結果は次のようになります
<input name="__RequestVerificationToken" type="hidden" value="E8as+4Ff1u/c/+kuFcNXXCREB5pz5GAfH2krN5RvzURJaHZSApuRc4czZqmoITaKdy0XhN5sFfRzl4ne+wB3PkWOscBWzoIxUk3hGaFwDxRXSbMs8K9IwojEAtV5u57MR7hiSujr6MOTpjjbf5FPaYgO4gmH6lSR9mbSyO2IedI=" />
<script type="text/javascript">
// Here, we ensure that jQuery is loaded then load up the rest of our JS in in order.
ord = Math.random() * 10000000000000000;
...
したがって、ページに追加するHTMLがあり、次にJSがあります。
問題は、Chromeで次の通知を受け取ることです。
スクリプトとして解釈されたが、MIMEタイプで転送されたリソース
偽造防止トークンを利用するには、ブラウザでこれをHTMLとして解釈する必要があります。
私はこれをビューに入れてみました:
<%@Page Title="" Language="C#" ContentType="text/xml" %>
レンダリングするもの:
<%System.Web.WebPages.DynamicPageDataDictionary`1[System.Object] Title="" Language="C#" ContentType="text/xml" %>
<input name="__RequestVerificationToken" type="hidden"
...
...しかし、同じメッセージが続きます。
私のコントローラーでは、次のことも試しました。
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
Byte[] bytes = encoding.GetBytes(page.clientScript);
return new ContentResult
{
ContentType = "text/xml", // also tried text/html
Content = Encoding.UTF8.GetString(bytes),
ContentEncoding = System.Text.Encoding.UTF8
};
同じ問題。
- アップデート -
これは、テキストを返すためにMVCアプリを呼び出す方法です。
// used to load scripts on to the client script using a non-blocking asynch request
(function() {
function async_load(){
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'http://myserver/MyAppPath/someids';
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
}
if (window.attachEvent)
window.attachEvent('onload', async_load);
else
window.addEventListener('load', async_load, false);
})();