繁体   English   中英

飞行前响应中的Access-Control-Allow-Headers不允许请求标头字段Access-Control-Request-Methods

[英]Request header field Access-Control-Request-Methods is not allowed by Access-Control-Allow-Headers in preflight response

我试图将POST请求从我的网站发送到远程服务器,但是遇到一些CORS问题。

我在互联网上进行搜索,但没有找到解决我特定问题的方法。 这是我的ajax请求参数:

var params = {
    url: url,
    method: 'POST',
    data: JSON.stringify(data),
    contentType: 'json',
    headers: {
        'Access-Control-Request-Origin': '*',
        'Access-Control-Request-Methods': 'POST'
    }

在后端,这是我在python中的代码:

@app.route(SETTINGS_NAMESPACE + '/<string:product_name>', methods=['POST', 'OPTIONS'])
@graphs.time_method()

def get_settings(product_name):
    settings_data = helper.param_validate_and_extract(request, None, required=True, type=dict, post_data=True)
    settings_data = json.dumps(settings_data)
    response = self._get_settings(product_name, settings_data)
    return output_json(response, requests.codes.ok, headers = {
        'Access-Control-Allow-Origin': '*', 
        'Access-Control-Allow-Methods': 'POST'
    })

我在控制台上收到一个错误:

XMLHttpRequest无法加载[ http:// path-to-my-server] 飞行前响应中的Access-Control-Allow-Headers不允许请求标头字段Access-Control-Request-Methods

我确实注意到我也可以添加'Access-Control-Request-Headers'但是我不确定是否有必要,这会导致更多问题,因此我将其删除。

有谁知道如何解决这个问题?

您的ajax请求不应发送Access-Control标头,只有服务器发送那些标头,以允许服务器描述允许使用Web浏览器读取该信息的一组来源。

通常,同源策略不适用于外部浏览器,因此,如果浏览器要获取数据,则服务器必须发送CORS标头或JSONP数据。

浏览器不需要将这些标头发送到服务器,也不必发送给服务器,而是由服务器来决定数据是否可用于特定来源。

params对象中删除header选项,它应该可以工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM