我正在做一个ASP.NET mvc5项目。 在其中一个页面中,我有一个按钮,我想用它来发布跨域api。
我尝试用ajax这样做这个帖子:
$.ajax({
type: "POST",
url: URLX,
data: myJSObject,
success: function (data) {
console.log("test123");
},
"async": true,
"crossDomain": true,
headers: {
"Content-Type": "application/json",
//"Authorization": "Bearer XX+n06LhXHb/cAZyBSvXZAd1LlkO8NqtORuHGyexWr4=",
"apiKey": "MEV8yv3hxxxxxxxxxxxxxxxFdKWJer4H3LmL6ntcL",
"Access-Control-Allow-Headers": "*",
"Access-Control-Allow-Origin": "*"
}
});
但是根据我的阅读,我无法使用JavaScript进行跨域请求,因此我尝试使用表单:
<div class="hiddenform">
<iframe name="hiddenFrame" width="0" height="0" border="0" style="display: none;"></iframe>
<form action="http//something.com/otherthing" id="login_form" method="post" target="hiddenFrame">
<div class="form_section">You can login here</div>
<div class="form_section">
<input xmlns="http://www.w3.org/1999/xhtml" class="text" id="userIdform"
name="session[sec1]" tabindex="1" type="text" value="" />
</div>
<div class="form_section">
<input xmlns="http://www.w3.org/1999/xhtml" class="text" id="periodform"
name="session[sec2]" tabindex="1" type="text" value="" />
</div>
<div class="form_section">
<input xmlns="http://www.w3.org/1999/xhtml" class="text" id="benchform"
name="session[sec3]" tabindex="1" type="text" value="" />
</div>
<div class="form_section">etc</div>
<div xmlns="http://www.w3.org/1999/xhtml" class="buttons">
<button type="submit" class="" name="" id="goform" tabindex="3">Go</button>
</div>
</form>
另外,这是服务器CORS config https://gist.github.com/michiel/1064640
我的问题是我需要发送带有apiKey的标头,这可能是一种形式吗?如果没有,当我在我的asp.net MVC5页面上按下按钮时,还有哪些其他选项允许我进行跨域发布?
由于
答案 0 :(得分:1)
如果您的终端支持,可以使用CORS进行跨域XMLHttpRequest
。
这些标头是响应标头,如果启用了CORS,它们将从服务器返回。您不应该将它们发送到服务器。
"Access-Control-Allow-Headers": "X-Requested-With",
"Access-Control-Allow-Origin" : "*"
因此,只需确保您的服务器返回Access-Control-Allow-Origin
标题。
您应该只通过这种方式发送您的自定义标头(使用API密钥):
$.ajax({
...
headers: { 'APIKeyPost': 'MEVxxxxxxxxxxxxxx4H3LmL6ntcL' }
...
});