人回答如何修改http请求头中的origin吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了人回答如何修改http请求头中的origin吗相关的知识,希望对你有一定的参考价值。

如果你是说的页面的话:用chrome插件修改,随手搜了一个

如果你说的是代码层面的话:不同语言可能实现不一致。

另外你问问题,一定要把问题场景描述清楚啊。

参考技术A

跨域(JS操作的时候) (当地址出现跨域(协议 域名 端口)的时候 浏览器html协议就会在你的请求头(不管GET还是POST)中加入请求源头Origin:'url' 当目标服务器没有同意该地址访问的时候就会400)

而是不是只有自己用

httpRequest.setRequestHeader('','');

改了Origin就行了 那太天真了 这个是禁止修改的消息首部

Look (https://developer.mozilla.org/zh-CN/docs/Glossary/禁止修改的消息首部)

参考技术B origin主要是用来说明最初请求是从哪里发起的; origin只用于Post请求

Nginx配置origin限制跨域请求(应对等保)

Nginx需要修复一个安全漏洞



这个需要根据客户端传递的请求头中的Origin值,进行安全的跨站策略配置,目的是对非法的origin直接返回403错误页面,配置如下:

1、在http中定义一个通过map指令,定义跨域规则并返回是否合法

http 
    ...
    # 说明:一般使用http_origin来进行跨域控制,当不传递origin头的时候,就为这个里面的默认值,当传递有值得时候,才会走下面得正则匹配
    map $http_origin $allow_cors 
        default 1;
        "~^https?://.*?\\.theorydance\\.com.*$" 1;
        "~^(https?://(dmp.xxxxxx.cn)?)$" 1;
        "~*" 0;
    
    server 
        location / 
            if ($allow_cors = 0)
                return 403;
            
            root /data/deploy;
        
    


上述规则中,
a.当不传递origin头的时候,就为这个里面的默认值为1,
b.如果orgin的值为https://dmp.xxxxxx.cn或者含“theorydance”的,我们认为是合法的请求,返回数值1,如果是其它值,返回数值0

2、在server中根据$allow_cros的值进行请求拦截

if ($allow_cros = 0)
     return 403;

3、在server中添加头部

#指定允许其他域名访问        
add_header Access-Control-Allow-Origin $http_origin;
#允许的请求类型
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
#许的请求头字段
add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";

验证
1.不指定 origin时,请求正常

2.指定合法 origin时,请求正常

3.指定非法origin时,请求返回403

参考链接
https://www.cnblogs.com/justtosee/p/16987894.html
https://www.cnblogs.com/TheoryDance/p/16277577.html

以上是关于人回答如何修改http请求头中的origin吗的主要内容,如果未能解决你的问题,请参考以下文章

Nginx配置origin限制跨域请求(应对等保)

AJAX跨域问题解决方法——被调用方解决跨域

自定义请求头引起预检请求

如何在http请求头中添加cookie-CSDN论坛

http请求头中的content-type属性

HTTP请求头中的那些东西