发出img请求时跨域读取阻止(CORB)问题

时间:2018-06-26 15:54:00

标签: django cookies cors http-headers cross-origin-read-blocking

我当前正在尝试实施此解决方案here。由于我是这两个主机的所有者,因此该解决方案似乎非常简单且可行。在mysite1.com上,我添加了以下img标签。

<img src="//mysite1.com.com/cookie_set/" style="display:none;">

在我的site2.com(django)上,我有一个类似的视图:

def cookie_set(request):
    response = HttpResponse()
    response.set_cookie('my_cookie', value='awesome')
    return response

当我实时发布此代码时。我收到以下错误:

Cross-Origin Read Blocking (CORB) blocked cross-origin response https://www.mysite2.com/cookie_set/ with MIME type text/html. See https://www.chromestatus.com/feature/121212121221 for more details.

我认为,如果我只是添加"Access-Control-Allow-Origin"可能会解决问题,但是根据此处的文档https://www.chromium.org/Home/chromium-security/corb-for-developers,还有更多考虑因素:

  

例如,它将阻止从或标记请求的跨域文本/ html响应,而将其替换为空响应。

我的假设正确吗?添加正确的标题后,我应该只将内容类型更改为text/html以外的其他内容吗?

最终,我的最终目标是要为我可以控制的其他域设置一个Cookie(最好没有重定向)。

2 个答案:

答案 0 :(得分:0)

最佳解决方案:为此使用其他标签。 (即iframe)。

CORB的要点是防止某些标签用于XSSI数据注入,因此img标签请求不应返回text / html,application / json或xml内容类型。

因此,除非对img标签的调用确实是用于捕获请求本身(例如,对于引荐来源跟踪),否则无论如何都通过在iframe中执行(例如,对于SSO重定向工作流),您将获得更多的功能。

另请参阅:Setting third party cookie by using 1x1 <img> tag - Javascript doesn't drop cookie

答案 1 :(得分:0)

我通过更新S3的“属性”下的Content-Type元数据-JPEG文件的image/jpeg和PNG文件的image/png,修复了图像文件的问题。

我的应用程序通过multer-s3上传了图像文件,看来它适用于Content-Type: 'application/x-www-form-urlencoded'。它具有contentType option,具有内容类型自动检测功能-这样可以防止标题不正确并解决CORB问题。

似乎最新的Chrome 76版本更新包括侦听远程文件URL标头,尤其是Content-Type。对于其他浏览器(例如Firefox,Safari和应用内浏览器),CORB并不是问题。 Instagram。