如何从 safari 扩展中调用 python 函数

Posted

技术标签:

【中文标题】如何从 safari 扩展中调用 python 函数【英文标题】:How to call python function from safari extension 【发布时间】:2017-11-23 21:13:21 【问题描述】:

我正在创建一个 safari 扩展程序,并且在后端我使用 python 来保存数据。但我无法调用 python 函数,它给了我这个错误:

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

这是我的python函数网址:http://localhost:8000/polls/add

我正在使用 jquery/ajax 调用 python 函数

这是我的脚本代码:

var action_url ="localhost:8000/polls/add";
params = 'contact_name=abc&contact_email=abc@gmail.com&content=here is content';
$.ajax(
    url: action_url,
    type: 'GET',
    beforeSend: function(xhr)
        xhr.setRequestHeader('Access-Control-Allow-Ori‌​gin', 'localhost');
    ,
    xhrFields:  withCredentials: true ,
    crossDomain: true,
    data: JSON.stringify(params),
    error: function (e)  alert('error = '+e) ,
    success: function (data)  alert(data); 
);

【问题讨论】:

请编辑您的问题,而不是添加 cmets。 您好 GGG,感谢您的回复。好的,已编辑 【参考方案1】:

您似乎遇到了CORS 问题。尝试从 Safari 中禁用它,check this out 可能会有所帮助。

【讨论】:

嗨,Vitalie Maldur,是的,我遇到了 CORS 问题,我查看了您的回复,但对我没有帮助。 您是否尝试在服务器的响应中设置Access-Control-Allow-Origin: *?不是您的要求。 是的,我是这样设置的,这是我的 def def helloworld(): resp = make_response() resp.headers['Access-Control-Allow-Origin'] = '*' return resp getting同样的错误

以上是关于如何从 safari 扩展中调用 python 函数的主要内容,如果未能解决你的问题,请参考以下文章

仅在满足某些条件时才调用 Safari Content Blocker 扩展?

C# 调用具有不同类型的相同扩展函​​数作为参数(可能是委托?)

带有 Safari 扩展的 Mac App Store 应用程序

从 Safari 扩展访问书签?

Safari 扩展:WebSocket 连接失败调用 onclose 而不是 onerror 并且没有异常

无法从项目中删除共享扩展,它仍然出现在 Safari 中