2017-10-18 204 views
-1

我想向遠程API發送AJAX請求。如何設置原始請求標頭

function Gettest(CourseID) { 
    var param = { "CourseID": CourseID}; 
    param = JSON.stringify(param); 
    $.ajax({ 
     type: "Post", 
     url: apiurl + "Course/DelCoursetargetedaudience", 
     contentType: "application/json; charset=utf-8", 
     data: param, 
     dataType: "json", 
     success: function (data) { 
     }, 
     error: function (response) { 
     } 
    }); 
}; 

但我需要在發送請求之前更改原始名稱。

請參考下圖。

enter image description here

+0

爲什麼你需要改變它? – Baksteen

+0

謝謝你的回覆。我有我的API在生產。那裏不允許本地主機請求。 – Rakesh

+0

你應該看看CORS讓服務器允許跨域請求 – Baksteen

回答

2

簡而言之:你不能。

MDN所述; Origin是一個'禁止'標題,這意味着你不能以編程方式改變它。

您需要將Web服務器配置爲允許CORS請求。

添加到您的Web.config

<system.webServer> 
    <!-- Other stuff is usually located here as well... --> 
    <httpProtocol> 
     <customHeaders> 
      <add name="Access-Control-Allow-Origin" value="*" />    
     </customHeaders> 
    </httpProtocol> 
<system.webServer> 
+0

謝謝,我知道這..我的期望離子是不是這個... – Rakesh

1

正如Baksteen說,你不能改變在JavaScript中這個標頭值。您將不得不編輯您的服務器配置以允許跨源請求。

但是:閱讀您的意見後,我認爲你需要進行調試和測試只有一個解決方案。

在這種情況下,您可以使用Chrome並使用特殊的不安全參數啓動它。如果您將此參數提供給Chrome,它將允許您跨域請求。

不要將這個chrome實例用於測試頁面之外的其他事情!

chrome --disable-web-security --user-data-dir 

我試了幾個附加組件用於Firefox和Chrome,但他們並沒有用最新版本的瀏覽器工作。所以我建議切換到chrome並使用上面的參數來測試你的API調用。


如果你有興趣在一個更強大的解決方案,您可能需要使用一個調試代理,像Fiddler from Telerik。您可以編寫自定義規則,因此在請求離開您的PC之前,Fiddler會更改您的標題。但是在使用它的所有權力之前,你必須深入研究這個工具。這可能很有趣,因爲它可以幫助你解決更多的問題。