【问题标题】:Add custom headers to crossbrowser requests向跨浏览器请求添加自定义标头
【发布时间】:2013-07-12 12:30:27
【问题描述】:

我们的 API 实现存在问题。我们在 Nginx 服务器中使用 Slim 框架、PHP 实现 API 假设我们在域 api.mydomain.com 中实现我们的 api,并尝试向 services.mydomain.com 或 apps.mydomain.com 等域发送 GET、POST、PUT 请求。我们的请求需要为“x”添加自定义标头-api-key' 和 'x-session-key' 用于安全性。但是当我们尝试添加任何方法时使用 jquery,我们无法将请求发送到不同的域。我们通过添加两种方式进行了尝试

标题:{ 'X_API_KEY' : varibaleName.apiSecretKey }, beforeSend: function(xhr){xhr.setRequestHeader('X-Test-Header', 'test-value');},

jQuery.ajax({
                url: secretIdUrl,
                    type:'GET',
                    crossDomain: true,
                    //headers: { 'X_API_KEY' : varibaleName.apiSecretKey },
                    beforeSend: function(xhr){xhr.setRequestHeader('X-Test-Header', 'test-value');},
              dataType: "json",

                success: function (data) {          
                         if(data.results){
                              widgetControl.setSecretID(data.results.id);
                         }
                }
            });

如果您有类似问题的经验,请指导我们在 ajax 请求的客户端解决此问题

参考: http://enable-cors.org
http://dev.opera.com/articles/view/dom-access-control-using-cross-origin-resource-sharing
http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/

【问题讨论】:

    标签: nginx header


    【解决方案1】:

    试试:

    location / {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'X_API_KEY'; # and all headers ', ' separated
    }
    

    更多add_header:http://wiki.nginx.org/HttpHeadersModule#add_header

    【讨论】:

      猜你喜欢
      • 2012-11-15
      • 2017-11-06
      • 2013-11-13
      • 2021-08-25
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      相关资源
      最近更新 更多