在html表单帖子或替代方案上发送apiKey

时间:2015-09-08 10:39:57

标签: javascript jquery html asp.net asp.net-mvc

我正在做一个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页面上按下按钮时,还有哪些其他选项允许我进行跨域发布?

由于

1 个答案:

答案 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' }
    ...
});