我是這樣創建網站的,里面寫介面都是用ashx,如果兩個程式要互相訪問介面如何實作跨域的問題呢。請求介面用js
uj5u.com熱心網友回復:
是ajax嗎?uj5u.com熱心網友回復:
是的uj5u.com熱心網友回復:
ajax試試用jsonp,這個是ajax跨域請求模式,以前用過可行,不過沒太去注意。uj5u.com熱心網友回復:
我是這樣的
//獲得context物件
var context = listerner.EndGetContext(ar);
var request = context.Request;
var response = context.Response;
//告訴客戶端回傳的ContentType型別為純文本格式,編碼為UTF-8
context.Response.ContentType = "text/plain;charset=UTF-8";
//添加回應頭資訊
context.Response.AddHeader("Content-type", "text/plain");
context.Response.AddHeader("Access-Control-Allow-Origin", "*");
context.Response.AddHeader("Access-Control-Allow-Credentials", "true");
context.Response.AddHeader("Access-Control-Allow-Methods", "Get,Post,OPTIONS");
context.Response.AddHeader("Access-Control-Request-Headers", "X-Custom-Header");
context.Response.ContentEncoding = Encoding.UTF8;
然后回傳的JSON
//設定客戶端回傳資訊的編碼
var returnByteArr = Encoding.UTF8.GetBytes("cardResult(" + json + ")");//設定客戶端回傳資訊的編碼
uj5u.com熱心網友回復:
這樣設定成*是不是不安全,而且設定成*session好像也不能傳遞吧uj5u.com熱心網友回復:
c# 允許跨域的代碼<add name="Access-Control-Allow-Methods" value="https://bbs.csdn.net/topics/OPTIONS,POST,GET"/>
<add name="Access-Control-Allow-Headers" value="https://bbs.csdn.net/topics/x-requested-with,content-type"/>
<add name="Access-Control-Allow-Origin" value="https://bbs.csdn.net/topics/*" />
然后出去的json,要套上一層cardResult
這2點是關鍵,其他的隨意
uj5u.com熱心網友回復:
我感覺跨域應該是后端處理的uj5u.com熱心網友回復:
好的,收到
uj5u.com熱心網友回復:
cardResult這是什么東西uj5u.com熱心網友回復:
就是個函式,隨意取的,你先用正常的傳,不能取到值了。要記得多套一層,MD,什么原理,我現在還沒明白,但我看到2個地方遇到這個了。uj5u.com熱心網友回復:
是的,沒錯,我的就是服務端的。
1,要宣告跨域,就是前面的代碼
2,回傳json到客戶端,要加一個函式名,客服端接,也是同樣的名
3,這個是get方法,post沒有去做
uj5u.com熱心網友回復:
這樣設定成*是不是不安全,而且設定成*session好像也不能傳遞吧
我是這樣的
//獲得context物件
var context = listerner.EndGetContext(ar);
var request = context.Request;
var response = context.Response;
//告訴客戶端回傳的ContentType型別為純文本格式,編碼為UTF-8
context.Response.ContentType = "text/plain;charset=UTF-8";
//添加回應頭資訊
context.Response.AddHeader("Content-type", "text/plain");
context.Response.AddHeader("Access-Control-Allow-Origin", "*");
context.Response.AddHeader("Access-Control-Allow-Credentials", "true");
context.Response.AddHeader("Access-Control-Allow-Methods", "Get,Post,OPTIONS");
context.Response.AddHeader("Access-Control-Request-Headers", "X-Custom-Header");
context.Response.ContentEncoding = Encoding.UTF8;
然后回傳的JSON
//設定客戶端回傳資訊的編碼
var returnByteArr = Encoding.UTF8.GetBytes("cardResult(" + json + ")");//設定客戶端回傳資訊的編碼
那位大俠幫樓主解決下這個問題!樓主需要去掉context.Response.AddHeader("Access-Control-Allow-Origin", "*");還要解決跨域。我目前不知道怎么做。
uj5u.com熱心網友回復:
老問題了,Nuget下載Microsoft.AspNet.WebApi.Cors組件就能解決。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/77809.html
標籤:C#
上一篇:emgucv播放rtsp視頻問題
